【问题标题】:How do I exclude auto generated columns from SQL Server Generate Script Data Only?如何从 SQL Server 仅生成脚本数据中排除自动生成的列?
【发布时间】:2011-02-16 19:15:46
【问题描述】:

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

【问题讨论】:

    标签: sql-server-2008 data-generation scriptgenerate


    【解决方案1】:

    不在 SSMS 本身中。

    您可以使用第三方工具,例如免费的SSMS Tools pack,它具有“从网格结果生成脚本”选项。所以你可以为SELECT col1, col3, col6 FROM MyTable 生成插入(跳过一些列)。

    可能有用...

    【讨论】:

      【解决方案2】:

      在 SQL Server 中似乎没有办法做到这一点,但一种快速的解决方法是创建一个初始脚本,然后使用它来创建一个临时表。然后可以删除不需要的列,使用临时表为剩余的列生成 SQL 语句。

      假设您要复制Events 表,但不想包含id

      • 转到任务 > 生成脚本并从 Events 生成 SQL Server 脚本。在“高级”选项中,确保您正在复制数据和架构。还要确保您没有编写主键或外键脚本(您仍会在 SQL 脚本中看到这些列,但这将更容易从临时表中快速删除它们)。
      • 在文本编辑器中打开生成的 SQL 脚本并使用查找和替换来更改表的名称,即从 EventsEventsTemporary
      • 在 SQL Server 中使用此脚本来创建 EventsTemporary 表并为其设定种子。从此表中删除您不想复制的列,例如id
      • EventsTemporary 表生成第二个脚本,但这次只是复制没有架构的“数据”。在文本编辑器中打开这个新的 SQL 脚本并将表的名称改回Events
      • 使用 SQL Server 中的第二个脚本将数据导入到您的实际 Events 表中。

      【讨论】:

        猜你喜欢
        • 2017-05-24
        • 2020-04-09
        • 1970-01-01
        • 2010-10-18
        • 1970-01-01
        • 1970-01-01
        • 2012-02-18
        • 1970-01-01
        • 2021-11-04
        相关资源
        最近更新 更多