Export MS SQL Schema

  • 2572
  • 0

要將資料庫內的資料表規格做成EXCEL,

需要抓取各欄位名稱以及資料型別等等,

不想自己手打就用SQL語法抓了。

 

參考這個回答

Exporting SQL Server schema to Excel 

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/566ec9b7-35f1-4e0d-93ac-ed5868d8f521/exporting-sql-server-schema-to-excel?forum=sqlexpress


關鍵就是 「select * from INFORMATION_SCHEMA.COLUMNS」

可以抓資料表所有欄位的相關定義,效果如下圖:

 

 

 

 

 

 

剩下就是抓出要的欄位,做格式上的調整,

我自己的需求的話就會像這樣

SELECT  ORDINAL_POSITION AS '序號',
		COLUMN_NAME AS '欄位名稱',
		DATA_TYPE AS '格式',
                            --有長度的資料欄位
		CASE WHEN CHARACTER_MAXIMUM_LENGTH>0  THEN CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR)
			 WHEN CHARACTER_MAXIMUM_LENGTH=-1 THEN 'MAX' //MAX 值會是-1
                            --數字型態的長度是在另一個欄位,時間型態的還是會是NULL
			 WHEN CHARACTER_MAXIMUM_LENGTH is null 
                  THEN CAST(NUMERIC_PRECISION AS VARCHAR) +','+CAST(NUMERIC_SCALE AS VARCHAR)
		 END AS '長度',
		CASE WHEN IS_NULLABLE = 'YES' THEN ''
			 ELSE IS_NULLABLE END AS '允許Null',
		CASE WHEN COLUMN_DEFAULT is null THEN ''
                           --去掉前後括號
		     ELSE SUBSTRING(COLUMN_DEFAULT,2,LEN(COLUMN_DEFAULT)-2) END AS '預設值'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME=[TABLENAME]

產生的結果會像

最後在將所有資料選取後,按右鍵就選取「與標頭一起複製」,如下圖,就可以貼到EXCEL做後續編輯了。