【问题标题】:Create SQL INSERT Script with values gathered from table使用从表中收集的值创建 SQL INSERT 脚本
【发布时间】:2011-11-22 19:51:09
【问题描述】:

我需要创建一个 INSERT 脚本,以便在另一个数据库中插入相同的数据。
如果在 SQL Server 中我选择“将表脚本作为 > INSERT To”,我可以轻松地重新创建 INSERT 语句的框架。但是,由于我有几条记录要迁移,我宁愿避免手动插入值。

因此,有什么方法可以“自动”获取包含值(来自目标表)的 INSERT 脚本?

我知道这可以通过 SSIS 完成,但我想知道是否可以通过更快的解决方案来实现。

【问题讨论】:

    标签: sql sql-server-2008


    【解决方案1】:

    您可以使用 SSMS 做到这一点。

    1 - 在对象资源管理器中右键单击您的数据库。
    2 - 选择任务/生成脚本...
    3 - 在 Set Scripting Options 页面上,单击 Advanced 按钮并确保 Types of data to script 设置为 Data only

    生成的脚本将在顶部有一个USE DATABASE 语句。将此更改为您要插入数据的数据库。

    【讨论】:

    • 仅供参考,您可以在工具/选项/SQL Server 对象资源管理器/脚本/常规脚本选项/脚本使用下关闭USE Database 命令
    • 如果您使用输出作为模板插入新记录,您还需要手动从生成的 T-SQL 中删除任何标识列,或者将 IDENTITY_INSERT 设置为 on。
    【解决方案2】:

    使用免费 SSMS tools pack to "generate insert statements"?

    或在 SSMS 中(此 PC 上没有确认)导出向导也允许您“编写数据”

    【讨论】:

    • 导出向导允许我导出数据,但不能导出带有数据的语句。但是为工具 +1,看起来很不错!
    • @Luca:工具必不可少!检查 RedFilter 对 SSMS 向导的回答。
    • SSMS 在 2012 年以上不再免费
    【解决方案3】:

    这取决于数据类型,因为您需要有条件地将字符串值括在引号中或将数值转换为字符串。你还需要处理问题字符:

    SELECT 'INSERT INTO dbo.DestinationTable(col1, col2, col3) 
        SELECT ' + CONVERT(VARCHAR(12), col1) + ',' 
            + '''' + REPLACE(col2, '''', '''''') + ''','
            + '''' + REPLACE(col3, '''', '''''') + ''';'
        FROM dbo.SourceTable;
    

    Vyas 有一个 pretty complex stored procedure 用于此目的。

    当然,您只需说:

    INSERT INTO OtherDatabase.dbo.DestinationTable(col1, col2, col3)
        SELECT col1, col2, col3 FROM dbo.SourceTable;
    

    换句话说,您不需要为插入“编写脚本”,只需运行它即可...

    【讨论】:

    • 第二种方法会很简单,只要不在没有远程访问的完全不同的 Intranet/服务器上:-(
    • @Luca,在这种情况下导出文件并使用 SSIS 或导入导出向导将其引入。
    • @HLGEM:RedFilter 提供的解决方案与我正在寻找的解决方案非常接近,因为它是最直接的。不过谢谢你的提示。
    【解决方案4】:
    【解决方案5】:

    @RedFilter,您的解决方案对更少的数据SIZE很有帮助。

    就我而言,当我尝试打开导出的 sql 文件时,遇到了 OutOfMemoryException。

    文件大小约为 4GB。

    为了从该文件中获取数据,我尝试了BCP(Bulk Copy Program) 方法。

    希望这对某人有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多