SQL Server生成脚本在使用高级选项中的“脚本数据类型”的“仅数据”选项为表中的数据创建脚本方面做得很好。但是,生成的脚本还包括所有标识符,例如rowid()和整数id。可以理解这是参考完整性,但有没有办法排除这些列?
答案 0 :(得分:1)
SQL Server中似乎没有一种方法可以执行此操作,但是一种快速的解决方法是创建一个初始脚本,然后使用该脚本创建一个临时表。然后,您可以删除不需要的列,并使用临时表为其余列生成SQL语句。
假设您要复制Events
表,但不想包含id
:
Events
生成SQL Server脚本。在“高级”选项中,确保同时复制数据和架构。还要确保您没有编写主键或外键的脚本(您仍然会在SQL脚本中看到这些列,但这将使从临时表中快速删除它们变得更加容易)。Events
更改为EventsTemporary
EventsTemporary
表并为其设定种子。从该表中删除您不想复制的列,例如id
。EventsTemporary
表中生成第二个脚本,但是这次只复制“数据”而不使用模式。在文本编辑器中打开此新的SQL脚本,然后将表名称更改回Events
Events
表中。 答案 1 :(得分:0)
不在SSMS本身。
您可以使用第三方工具,例如免费SSMS Tools pack,其中包含“从网格结果生成脚本”选项。因此,您可以为SELECT col1, col3, col6 FROM MyTable
生成INSERT(跳过某些列)。
可能有用......