有办法用SQL生成建表的语句吗

sxq129601 2021-04-16 03:07:23
我想生成每张表的建表语句,网上的SQL发现有BUG,存在注释的时候会有问题。有没有其他的脚本或者方法生成创建表的SQL脚本
...全文
708 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
six2me 2021-04-21
  • 打赏
  • 举报
回复
我认为最简单的方法就是手动建立表,然后导出,我试验过了,没问题,用的是navicat连接mysql
xiaoxiangqing 2021-04-21
  • 打赏
  • 举报
回复
用ssms也很方便的
吉普赛的歌 2021-04-20
  • 打赏
  • 举报
回复
这种不好弄了,我这边完全没有问题。 你自己单步跟踪看下具体哪里出错吧。
sxq129601 2021-04-20
  • 打赏
  • 举报
回复
可以是可以了,但是执行会报错 IF OBJECT_ID('[dbo].[door_nj]') IS NOT NULL DROP TABLE [dbo].[door_nj] GO CREATE TABLE [dbo].[door_nj] ( [id] UNIQUEIDENTIFIER NOT NULL, [estate_id] UNIQUEIDENTIFIER NULL, [buliding_name] NVARCHAR(50) NULL, [building_id] UNIQUEIDENTIFIER NULL, [unit_name] NVARCHAR(50) NULL, [unit_id] UNIQUEIDENTIFIER NULL, [door_name] NVARCHAR(50) NULL, [door_id] NVARCHAR(50) NULL, [createtime] DATETIME NULL, CONSTRAINT [PK_door_nj] PRIMARY KEY CLUSTERED ([id] asc) ) 错误信息为: 消息 102,级别 15,状态 1,第 3 行 “GO”附近有语法错误。
吉普赛的歌 2021-04-20
  • 打赏
  • 举报
回复
引用 11 楼 sxq129601 的回复:
[quote=引用 9 楼 吉普赛的歌 的回复:][quote=引用 7 楼 sxq129601 的回复:]2019 不好用。输出结果是 IF OBJECT_ID('[dbo].[door_nj]') IS NOT NULL DROP TABLE [dbo].[door_nj] GO CREATE TABLE [dbo].[door_nj] )
估计你是弄错库了, 默认创建在 master 库, 创建脚本的默认库你改一下。[/quote] 执行 exec sp_GetDDL '[Spider_Temp].[dbo].[door_nj]' [/quote] 你还是跨库了,这样有问题的。 直接在 Spider_Temp 库上创建 sp_GetDDL 存储过程,然后执行:

use Spider_Temp
GO
exec sp_GetDDL 'door_nj'
sxq129601 2021-04-20
  • 打赏
  • 举报
回复
引用 9 楼 吉普赛的歌 的回复:
[quote=引用 7 楼 sxq129601 的回复:]2019 不好用。输出结果是 IF OBJECT_ID('[dbo].[door_nj]') IS NOT NULL DROP TABLE [dbo].[door_nj] GO CREATE TABLE [dbo].[door_nj] )
估计你是弄错库了, 默认创建在 master 库, 创建脚本的默认库你改一下。[/quote] 执行 exec sp_GetDDL '[Spider_Temp].[dbo].[door_nj]'
sxq129601 2021-04-20
  • 打赏
  • 举报
回复
CREATE TABLE [dbo].[door_nj]( [id] [uniqueidentifier] NOT NULL, [estate_id] [uniqueidentifier] NULL, [buliding_name] [nvarchar](50) NULL, [building_id] [uniqueidentifier] NULL, [unit_name] [nvarchar](50) NULL, [unit_id] [uniqueidentifier] NULL, [door_name] [nvarchar](50) NULL, [door_id] [nvarchar](50) NULL, [createtime] [datetime] NULL, CONSTRAINT [PK_door_nj] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO
yiyoyiyocc 2021-04-20
  • 打赏
  • 举报
回复
我的回复收到了吗?怎么感觉被吞了
吉普赛的歌 2021-04-20
  • 打赏
  • 举报
回复
明白你的意思了。 执行存储过程没有问题。 但把存储过程结果中的脚本复制出来执行会出错。 你按下面的办法来吧:
DECLARE @t TABLE (
	SchemaName NVARCHAR(20),
	TableName NVARCHAR(100),
	Item NVARCHAR(MAX)	
)
INSERT INTO @t
exec sp_GetDDL 'door_nj'

DECLARE @sql NVARCHAR(MAX) 
SELECT @sql=item FROM @t
PRINT @sql
我亲测可行的。print 出来的脚本,复制执行没有问题。
吉普赛的歌 2021-04-19
  • 打赏
  • 举报
回复
sxq129601 2021-04-19
  • 打赏
  • 举报
回复
我的目的是存储过程生成,,不是用SSMS工具。
吉普赛的歌 2021-04-19
  • 打赏
  • 举报
回复
引用 7 楼 sxq129601 的回复:
2019 不好用。输出结果是 IF OBJECT_ID('[dbo].[door_nj]') IS NOT NULL DROP TABLE [dbo].[door_nj] GO CREATE TABLE [dbo].[door_nj] )
估计你是弄错库了, 默认创建在 master 库, 创建脚本的默认库你改一下。
吉普赛的歌 2021-04-19
  • 打赏
  • 举报
回复
引用 7 楼 sxq129601 的回复:
2019 不好用。输出结果是 IF OBJECT_ID('[dbo].[door_nj]') IS NOT NULL DROP TABLE [dbo].[door_nj] GO CREATE TABLE [dbo].[door_nj] )
你把你实际的创建表语句贴出来看看?
sxq129601 2021-04-19
  • 打赏
  • 举报
回复
2019 不好用。输出结果是 IF OBJECT_ID('[dbo].[door_nj]') IS NOT NULL DROP TABLE [dbo].[door_nj] GO CREATE TABLE [dbo].[door_nj] )
吉普赛的歌 2021-04-16
  • 打赏
  • 举报
回复
用 SSMS 是非常简单的,看我博客: https://blog.csdn.net/yenange/article/details/78983218
唐诗三百首 2021-04-16
  • 打赏
  • 举报
回复
SQL Server Management Studio-->选择数据库-->右键-->任务-->生成脚本-->...
Hello World, 2021-04-16
  • 打赏
  • 举报
回复
自带的MSSMS就可以了。注释也会生成的。 不知道你说的BUG是什么?
morliz子轩 2021-04-16
  • 打赏
  • 举报
回复
用建模工具。 比如:PowerDesigner、Enterprise Architect。都是我非常喜欢的工具

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧