MS SQL SERVER匯出表結構到Excel

2022-08-17 09:51:26 字數 4438 閱讀 8725

今天準備整理下手裡面幾個資料庫,形成乙個表結構文件,方便以後維護使用。

網上找到乙個指令碼還不錯,小小的修改就滿足了我的要求,執行完sql指令碼。

在結果就能看到資料庫所有表的結構,這個時候只要全選,然後右擊出來屬性框,選擇將結果另存為,這個時候您只要選擇匯出csv,然後新建乙個excel**,在選單欄選擇資料,再選擇自文字,後面的大家可以自己的需求自行處理了。

sql server指令碼:

select

表名 = case when a.colorder=1 then d.name else '' end,

表說明 = case when a.colorder=1 then isnull(f.value,'') else '' end,

字段序號 = a.colorder,

欄位名 = a.name,

字段說明 = isnull(g.[value],''),

標識 = case when columnproperty( a.id,a.name,'isidentity')=1 then '√'else '' end,

主鍵 = case when exists(select 1 from sysobjects where xtype='pk' and parent_obj=a.id and name in (

select name from sysindexes where indid in( select indid from sysindexkeys where id = a.id and colid=a.colid))) then '√' else '' end,

型別 = b.name,

占用位元組數 = a.length,

長度 = columnproperty(a.id,a.name,'precision'),

小數字數 = isnull(columnproperty(a.id,a.name,'scale'),0),

允許空 = case when a.isnullable=1 then '√'else '' end,

預設值 = isnull(e.text,'')

from

syscolumns a

left join

systypes b

on a.xusertype=b.xusertype

inner join

sysobjects d

on a.id=d.id and d.xtype='u' and d.name<>'dtproperties'

left join

syscomments e

on a.cdefault=e.id

left join

sys.extended_properties g

on a.id=g.major_id and a.colid=g.minor_id

left join

sys.extended_properties f

on d.id=f.major_id and f.minor_id=0

--where d.name='orderinfo' --如果只查詢指定表,加上此條件

order by

a.id,a.colorder

或者格式更緊湊

select

表名 = case when a.colorder=1 then d.name else '' end,

表備註 = case when a.colorder=1 then isnull(f.value,'') else '' end,

列序號 = a.colorder,

列名稱 = a.name,

標識 = case when columnproperty(a.id,a.name,'isidentity')=1 then '√ ' else '' end,

主鍵 = case when exists(select 1 from sysobjects where xtype='pk' and parent_obj=a.id and name in (

select name from sysindexes where indid in(

select indid from sysindexkeys where id=a.id and colid=a.colid))) then '√' else '' end,

型別 = b.name,

位元組 = a.length,

長度 = columnproperty(a.id,a.name,'precision'),

小數字 = isnull(columnproperty(a.id,a.name,'scale'),0),

允許空 = case when a.isnullable=1 then '√ 'else '' end,

預設值 = isnull(e.text,''),

列備註 = isnull(g.[value],'')

from

syscolumns a

left join systypes b on a.xusertype=b.xusertype

inner join sysobjects d on a.id=d.id and d.xtype='u ' --and d.name<>'dtproperties'

left join syscomments e on a.cdefault=e.id

left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id

left join sys.extended_properties f on d.id=f.major_id and f.minor_id=0

--where d.name='tbname' --查詢這個表

order by a.id,a.colorder

第三種方法

開啟sqlserver企業管理器,找到你要匯出使用者表字段資訊的那個資料庫,點選工具上的sql查詢分析器,直接copy下面的sql語句到查詢分析器中,點選f5執行。

select

(case when a.colorder=1 then d.name else '' end) n'表名',

a.colorder n'字段序號',

a.name n'欄位名',

isnull(g.[value],'') as n'字段說明',

(case when columnproperty( a.id,a.name,'isidentity')=1 then '√'else '' end) n'標識',

(case when (select count(*)

from sysobjects

where (name in

(select name

from sysindexes

where (id = a.id) and (indid in

(select indid

from sysindexkeys

where (id = a.id) and (colid in

(select colid

from syscolumns

where (id = a.id) and (name = a.name))))))) and

(xtype = 'pk'))>0 then '√' else '' end) n'主鍵',

b.name n'型別',

a.length n'占用位元組數',

columnproperty(a.id,a.name,'precision') as n'長度',

isnull(columnproperty(a.id,a.name,'scale'),0) as n'小數字數',

(case when a.isnullable=1 then '√'else '' end) n'允許空',

isnull(e.text,'') n'預設值'

--into ##tx

from syscolumns a left join systypes b

on a.xtype=b.xusertype

inner join sysobjects d

on a.id=d.id and d.xtype='u' and d.name<>'dtproperties'

left join syscomments e

on a.cdefault=e.id

left join sys.extended_properties g

on a.id=g.major_id and a.colid = g.minor_id

order by object_name(a.id),a.colorder

至此,該資料庫中的使用者字段資訊就出來了,然後可以把結果全選,複製到excel裡面、貼上。

MS SQL SERVER匯出表結構到Excel

select 表名 case when a.colorder 1then d.name else end 表說明 case when a.colorder 1then isnull f.value,else end 字段序號 a.colorder,欄位名 a.name,字段說明 isnull g.v...

mysql遷移 mysqldump匯出表結構及資料

問題描述 有需要mysql某幾張表的需求,某個資料庫某幾張表,匯出先檢查相應的資料庫和表是否存在 資料幫浦用法 預設匯出的是表結構以及表中的資料 mysqldump uroot p s data mysql db recovery mysql.sock default character set u...

使用SQL語句 匯出SQLServer表結構

select 表名 case when a.colorder 1 then d.name else end,表說明 case when a.colorder 1 then isnull f.value,else end,字段序號 a.colorder,欄位名 a.name,字段說明 isnull g...