5

SQL Server 生成脚本在高级选项中使用“要编写脚本的数据类型”的“仅数据”选项为表中的数据创建脚本方面做得很好。然而,生成的脚本还包括所有标识符,例如 rowid() 和整数 id。可以理解,这是为了参照完整性,但有没有办法排除这些列?

4

2 回答 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 脚本并使用查找和替换来更改表的名称,即从EventsEventsTemporary
  • 在 SQL Server 中使用此脚本来创建EventsTemporary表并为其设定种子。删除您不想从此表中复制的列,例如id.
  • 从表中生成第二个脚本EventsTemporary,但这次只是复制没有模式的“数据”。在文本编辑器中打开这个新的 SQL 脚本并将表的名称改回Events
  • 使用 SQL Server 中的第二个脚本将数据导入到您的实际Events表中。
于 2019-07-24T21:13:40.820 回答