[MSSQL]匯出資料表內欄位說明

有關資料庫的討論, 都可以在這發表哦~~

[MSSQL]匯出資料表內欄位說明

文章tim » 2018年 4月 9日, 14:08

參考資料: http://alvisprogramming.blogspot.tw/2014/12/t-sql-db-schema.html

代碼: 選擇全部
 SELECT a.Table_schema +'.'+a.Table_name   as 表格名稱   
       ,b.COLUMN_NAME                     as 欄位名稱   
       ,b.DATA_TYPE                       as 資料型別   
       ,isnull(b.CHARACTER_MAXIMUM_LENGTH,'') as 長度   
       ,isnull(b.COLUMN_DEFAULT,'')           as 預設值   
       ,b.IS_NULLABLE                         as 是否允許空值   
       ,( SELECT value   
          FROM fn_listextendedproperty (NULL, 'schema', a.Table_schema, 'table', a.TABLE_NAME, 'column', default)   
          WHERE name='MS_Description' and objtype='COLUMN'   
          and objname Collate Chinese_Taiwan_Stroke_CI_AS = b.COLUMN_NAME   
        ) as 欄位描述   
FROM INFORMATION_SCHEMA.TABLES  a   
 LEFT JOIN INFORMATION_SCHEMA.COLUMNS b ON a.TABLE_NAME = b.TABLE_NAME   
WHERE TABLE_TYPE='BASE TABLE'
ORDER BY a.TABLE_NAME , b.ORDINAL_POSITION
多多留言, 整理文章, 把經驗累積下來.....
頭像
tim
 
文章: 1267
註冊時間: 2008年 11月 26日, 00:49

Re: [MSSQL]匯出資料表內欄位說明

文章YY25 » 2018年 4月 9日, 15:29

fn_listextendedproperty function 回傳的value 要在轉型為varchar,不然可能在java 或 python 得到
The "variant" data type is not supported. [SQL State=08S01]的錯誤,因此而中斷連線。

SELECT a.Table_schema +'.'+a.Table_name as 表格名稱
,b.COLUMN_NAME as 欄位名稱
,b.DATA_TYPE as 資料型別
,isnull(b.CHARACTER_MAXIMUM_LENGTH,'') as 長度
,isnull(b.COLUMN_DEFAULT,'') as 預設值
,b.IS_NULLABLE as 是否允許空值
,( SELECT Convert(varchar(500),value)
FROM fn_listextendedproperty (NULL, 'schema', a.Table_schema, 'table', a.TABLE_NAME, 'column', default)
WHERE name='MS_Description' and objtype='COLUMN'
and objname Collate Chinese_Taiwan_Stroke_CI_AS = b.COLUMN_NAME
) as 欄位描述
FROM INFORMATION_SCHEMA.TABLES a
LEFT JOIN INFORMATION_SCHEMA.COLUMNS b ON a.TABLE_NAME = b.TABLE_NAME
WHERE TABLE_TYPE='BASE TABLE'
ORDER BY a.TABLE_NAME , b.ORDINAL_POSITION
YY25
 
文章: 1
註冊時間: 2018年 4月 9日, 15:01


回到 資料庫專區(SQL/ORACLE/MySQL/...)

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 2 位訪客

cron