SQL Server 生成脚本在高级选项中使用“要编写脚本的数据类型”的“仅数据”选项为表中的数据创建脚本方面做得很好。然而,生成的脚本还包括所有标识符,例如 rowid() 和整数 id。可以理解,这是为了参照完整性,但有没有办法排除这些列?
问问题
2448 次
2 回答
2
不在 SSMS 本身中。
您可以使用第 3 方工具,例如免费的SSMS 工具包,它具有“从网格结果生成脚本”选项。SELECT col1, col3, col6 FROM MyTable
因此,您可以为(跳过某些列)生成 INSERT 。
可能有用...
于 2011-02-16T19:27:59.347 回答
2
在 SQL Server 中似乎没有办法做到这一点,但一个快速的解决方法是创建一个初始脚本,然后使用它来创建一个临时表。然后,您可以删除不需要的列,并使用临时表为剩余的列生成 SQL 语句。
假设您想复制一个Events
表,但您不想包含id
:
- 转到任务 > 生成脚本并从
Events
. 在“高级”选项中,确保您正在复制数据和架构。还要确保您没有编写主键或外键脚本(您仍然会在 SQL 脚本中看到这些列,但这将更容易从临时表中快速删除它们)。 - 在文本编辑器中打开生成的 SQL 脚本并使用查找和替换来更改表的名称,即从
Events
到EventsTemporary
- 在 SQL Server 中使用此脚本来创建
EventsTemporary
表并为其设定种子。删除您不想从此表中复制的列,例如id
. - 从表中生成第二个脚本
EventsTemporary
,但这次只是复制没有模式的“数据”。在文本编辑器中打开这个新的 SQL 脚本并将表的名称改回Events
- 使用 SQL Server 中的第二个脚本将数据导入到您的实际
Events
表中。
于 2019-07-24T21:13:40.820 回答