2014年12月24日 星期三

使用T-SQL 匯出 DB Schema (表格名稱.欄位名稱.資料型別.長度.預設值.是否允許空值.欄位描述)


又到了年終驗收的季節,相信許多工程師現在又深陷在寫文件泥沼了....Orz

因為產文件最麻煩就是要產DB Schema,如果要一個DB 一個表 一個欄位自己key,那就真的太辛苦了!

以下的語法,可以幫助大家輕鬆的產出DB Schema,只要稍加整理,就可以完成報告拉~~~~(灑花)

-------------------------------------------這是指令碼------------------------------------------------------
USE Demo;
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 
-------------------------------------------這是指令碼------------------------------------------------------

簡單介紹一下上面的語法

INFORMATION_SCHEMA.TABLES //查詢該資料庫裡所有資料表資訊

INFORMATION_SCHEMA.COLUMNS  //查詢該資料表裡所有資料欄位資訊

fn_listextendedproperty //列出資料表欄位的資訊(為了取得 欄位描述 而使用)

※Chinese_Taiwan_Stroke_CI_AS  //這是指定資料庫的編碼(此為 台灣繁體中文且不分大小寫)


-------------------------------------------以下是執行介面------------------------------------------------

T-SQL 指令


執行結果

1 則留言: