• SQLServer导出数据库字典


    SQL

    直接修改带注释那行的表名称即可。

    1. SELECT
    2. 表名=case when a.colorder=1 then d.name else '' end,
    3. 表说明=case when a.colorder=1 then isnull(f.value,'') else '' end,
    4. 字段序号=a.colorder,
    5. 字段名=a.name,
    6. 标识=case when COLUMNPROPERTY(a.id,a.name,'IsIdentity')=1 then '√'else '' end,
    7. 主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in (
    8. SELECT name FROM sysindexes WHERE indid in(
    9. SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
    10. ))) then '√' else '' end,
    11. 类型=b.name,
    12. 占用字节数=a.length,
    13. 长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
    14. 小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
    15. 允许空=case when a.isnullable=1 then '√'else '' end,
    16. 默认值=isnull(e.text,''),
    17. 字段说明=isnull(g.[value],'')
    18. FROM syscolumns a
    19. left join systypes b on a.xtype=b.xusertype
    20. inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
    21. left join syscomments e on a.cdefault=e.id
    22. left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id
    23. left join sys.extended_properties f on d.id=f.major_id and f.minor_id =0
    24. where d.name='girlSix' --如果只查询指定表,加上此条件
    25. order by a.id,a.colorder

    测试sql

    1. CREATE TABLE [dbo].[girlSix] (
    2. [id] varchar(32) NOT NULL DEFAULT (replace(newid(),'-','')) ,
    3. [createDate] datetime NOT NULL DEFAULT (getdate()) ,
    4. [nickName] varchar(30) NOT NULL ,
    5. [introduce] nvarchar(200) NOT NULL
    6. )
    7. GO
    8. IF ((SELECT COUNT(*) from fn_listextendedproperty('MS_Description',
    9. 'SCHEMA', N'dbo',
    10. 'TABLE', N'girlSix',
    11. 'COLUMN', N'nickName')) > 0)
    12. EXEC sp_updateextendedproperty @name = N'MS_Description', @value = N'名字'
    13. , @level0type = 'SCHEMA', @level0name = N'dbo'
    14. , @level1type = 'TABLE', @level1name = N'girlSix'
    15. , @level2type = 'COLUMN', @level2name = N'nickName'
    16. ELSE
    17. EXEC sp_addextendedproperty @name = N'MS_Description', @value = N'名字'
    18. , @level0type = 'SCHEMA', @level0name = N'dbo'
    19. , @level1type = 'TABLE', @level1name = N'girlSix'
    20. , @level2type = 'COLUMN', @level2name = N'nickName'
    21. GO
    22. IF ((SELECT COUNT(*) from fn_listextendedproperty('MS_Description',
    23. 'SCHEMA', N'dbo',
    24. 'TABLE', N'girlSix',
    25. 'COLUMN', N'introduce')) > 0)
    26. EXEC sp_updateextendedproperty @name = N'MS_Description', @value = N'介绍'
    27. , @level0type = 'SCHEMA', @level0name = N'dbo'
    28. , @level1type = 'TABLE', @level1name = N'girlSix'
    29. , @level2type = 'COLUMN', @level2name = N'introduce'
    30. ELSE
    31. EXEC sp_addextendedproperty @name = N'MS_Description', @value = N'介绍'
    32. , @level0type = 'SCHEMA', @level0name = N'dbo'
    33. , @level1type = 'TABLE', @level1name = N'girlSix'
    34. , @level2type = 'COLUMN', @level2name = N'introduce'
    35. GO
    36. -- ----------------------------
    37. -- Records of girlSix
    38. -- ----------------------------
    39. INSERT INTO [dbo].[girlSix] ([id], [createDate], [nickName], [introduce]) VALUES (N'04e3d962adcb4a5b8fefaf8b46995e85', N'2020-05-27 09:05:52.000', N'董新颖', N'郭老师关门弟子之一。');
    40. GO
    41. INSERT INTO [dbo].[girlSix] ([id], [createDate], [nickName], [introduce]) VALUES (N'568fc305930347d3bec1ddd08c71ad29', N'2020-05-27 09:01:09.000', N'王笑涵', N'北方有佳人,绝世而独立。');
    42. GO
    43. INSERT INTO [dbo].[girlSix] ([id], [createDate], [nickName], [introduce]) VALUES (N'972ec358089042e0bf24fd9efca47bde', N'2020-05-27 08:59:49.000', N'牛龙珠', N'笑若桃花三月开,清风徐徐醉颜来。');
    44. GO
    45. INSERT INTO [dbo].[girlSix] ([id], [createDate], [nickName], [introduce]) VALUES (N'BDFFC6A36A53408281EB8CA242C0E7A3', N'2020-05-27 08:42:31.000', N'闫春娜', N'珠缨旋转星宿摇,花蔓抖擞龙蛇动。');
    46. GO
    47. INSERT INTO [dbo].[girlSix] ([id], [createDate], [nickName], [introduce]) VALUES (N'efb0ca854dac456b9d8c42d4c4b1bce0', N'2020-05-27 09:03:30.000', N'刘梓佳', N'明眸善睐,辅靥承权,瑰姿艳逸,怡静体闲,端的是好一个花王,富贵的牡丹。');
    48. GO
    49. INSERT INTO [dbo].[girlSix] ([id], [createDate], [nickName], [introduce]) VALUES (N'f839343b980e45caafaa9d2c9797294b', N'2020-05-27 09:04:53.000', N'魏慧娟', N'脉脉眼中波,盈盈花盛处。');
    50. GO
    51. -- ----------------------------
    52. -- Indexes structure for table girlSix
    53. -- ----------------------------
    54. -- ----------------------------
    55. -- Primary Key structure for table [dbo].[girlSix]
    56. -- ----------------------------
    57. ALTER TABLE [dbo].[girlSix] ADD PRIMARY KEY ([id])
    58. GO

    执行效果 

    导出结果:

    点击导出向导后会出现以下提示,我们选择【Excel文件(2007或以上版本)(*.xlsx)】格式进行导出,单选选择后点击下一步。

    这里的样式提示只有鼠标放在上面的时候才会提示,这个是导出文件的放置位置,我们直接点击【...】设置存储位置即可。

    选择位置,我这里就放在桌面了,名字给一个就行,可以看到对应的保存格式是Excel2007的表格格式,我这个版本比较老的工具,可以使用最新的能导出更新的一些版本格式。

    看到对应的路径输入成功,我们直接点击下一步即可。 

    这里勾选一下【包含列的标题】,再点击【下一步】。

    点击开始

    完成后点击关闭即可。

     

    我们到桌面看看是否存在。

     

    查看效果:

    可以看到除字段说明外都是正常的,我们字段说明的时候可以采用中文,因为导出数据无论是【GBK】还是【UTF-8】都无法正常输出中文,我们就不用麻烦了,需要使用的话可以自己处理一下最后一列的字段说明。 

    这里我介绍一下【Chinese_PRC_CI_AS】,因为我们创建数据库默认的数据库编码格式就是这个。

    指UNICODE字符集,Chinese_PRC_指针对中国简体字UNICODE的排序规则。

    虽然是中文的编码格式,但是导出依然有问题。

    期待以后都通用中文编码格式,免得各种格式错误。

  • 相关阅读:
    sklearn【MAPE】平均相对误差介绍,以及案例学习!
    假脱机技术(SPOOLING)
    开源的代名词「GitHub 热点速览」
    心电贴技术方案芯片LH001-91
    无法访问https://element.eleme.cn和https://element.eleme.io
    基于X86+FPGA+AI的智能仓储AGV机器人解决方案
    嵌入式分享合集63
    MongoDB基础【学习笔记】
    Jenkins笔记(一)
    分享125个ASP源码,总有一款适合你
  • 原文地址:https://blog.csdn.net/feng8403000/article/details/127683335