我需要创建一个INSERT脚本,以便在另一个数据库中插入相同的数据。
如果在SQL Server中我选择“Script table as> INSERT To”,我可以轻松地为INSERT语句重新创建骨架。但是,由于我有几个要迁移的记录,我宁愿避免手动插入值。
因此有没有办法“自动”获取INSERT脚本以及填充的值(来自目标表)?
我知道这可以通过SSIS完成,但我想知道是否可以使用更快的解决方案。
答案 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)
使用INSERT INTO ... SELECT格式:
答案 4 :(得分:0)
@RedFilter,您的解决方案就像魅力一样,可以减少数据 SIZE 。
对于我来说,当我尝试打开Exportd sql文件时,遇到了OutOfMemoryException。
文件大小约为4GB。
为了从该文件中获取数据,我尝试了BCP(Bulk Copy Program)方法。
希望对某人有帮助。