使用从表中收集的值创建SQL INSERT脚本

时间:2011-09-22 12:59:01

标签: sql sql-server-2008

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

因此有没有办法“自动”获取INSERT脚本以及填充的值(来自目标表)?

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

5 个答案:

答案 0 :(得分:97)

您可以使用SSMS执行此操作。

1 - 在对象资源管理器中右键单击您的数据库 2 - 选择任务/生成脚本...
3 - 在设置脚本选项页面上,单击高级按钮,确保脚本数据类型设置为仅限数据

生成的脚本顶部会显示USE DATABASE语句。将其更改为要将数据插入的数据库。

答案 1 :(得分:6)

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

或者在SSMS中(没有在此PC上确认)导出向导允许您“脚本数据”

答案 2 :(得分:1)

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

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;

换句话说,你不需要“编写”一个插件,你可以运行它......

答案 3 :(得分:0)

答案 4 :(得分:0)

@RedFilter,您的解决方案就像魅力一样,可以减少数据 SIZE

对于我来说,当我尝试打开Exportd sql文件时,遇到了OutOfMemoryException。

enter image description here

文件大小约为4GB。

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

希望对某人有帮助。