小言_互联网的博客

SQLServer导出数据库字典

213人阅读  评论(0)

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的排序规则。

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

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


转载:https://blog.csdn.net/feng8403000/article/details/127683335
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场