使用从表中收集的值创建SQL插入脚本
我需要创建一个INSERT脚本,以便在另一个数据库中插入相同的数据。使用从表中收集的值创建SQL插入脚本,sql,sql-server-2008,Sql,Sql Server 2008,我需要创建一个INSERT脚本,以便在另一个数据库中插入相同的数据。如果在SQL Server中选择“script table as>INSERT to”,我可以轻松地为INSERT语句重新创建框架。但是,因为我有几个记录要迁移,所以我宁愿避免手动插入值 因此,是否有任何方法可以“自动”获取插入脚本并填充值(来自目标表)? 我知道SSIS可以做到这一点,但我想知道是否也可以使用更快的解决方案。使用免费的 或者在SSMS中(这台电脑上不需要确认),导出向导也允许您“编写数据脚本”使用插入到。。。选
如果在SQL Server中选择“script table as>INSERT to”,我可以轻松地为INSERT语句重新创建框架。但是,因为我有几个记录要迁移,所以我宁愿避免手动插入值 因此,是否有任何方法可以“自动”获取插入脚本并填充值(来自目标表)?
我知道SSIS可以做到这一点,但我想知道是否也可以使用更快的解决方案。使用免费的
或者在SSMS中(这台电脑上不需要确认),导出向导也允许您“编写数据脚本”使用插入到。。。选择格式:
这取决于数据类型,因为您需要有条件地将字符串值括在引号中或将数值转换为字符串。您还需要处理问题角色:
SELECT 'INSERT INTO dbo.DestinationTable(col1, col2, col3)
SELECT ' + CONVERT(VARCHAR(12), col1) + ','
+ '''' + REPLACE(col2, '''', '''''') + ''','
+ '''' + REPLACE(col3, '''', '''''') + ''';'
FROM dbo.SourceTable;
Vyas为此目的提供了一个解决方案
当然,你可以简单地说:
INSERT INTO OtherDatabase.dbo.DestinationTable(col1, col2, col3)
SELECT col1, col2, col3 FROM dbo.SourceTable;
换句话说,您不需要“编写”插入脚本,只需运行它即可…您可以使用SSMS执行此操作 1-右键单击对象资源管理器中的数据库。
2-选择任务/生成脚本…
3-在“设置脚本选项”页面上,单击“高级”按钮,并确保要编写脚本的数据类型设置为“仅数据”
生成的脚本顶部将有一个
USE DATABASE
语句。将此更改为要将数据插入的数据库。@RedFilter,您的解决方案就像一个魅力,可以减少数据的大小
在我的例子中,当我试图打开导出的sql文件时,我遇到了OutOfMemoryException
文件大小约为4GB。
为了从那个文件中获取数据,我尝试了这种方法
希望这对某人有帮助。导出向导允许我导出数据,但不允许导出包含数据的语句。但是+1的工具,看起来非常好@卢卡:工具是必不可少的!检查RedFilter关于SSMS向导的回答。SSMS在2012年不再免费+第二种方法将非常简单,只要不在没有远程访问的完全不同的intranet/server上即可:-(@Luca,在这种情况下,请导出一个文件,并使用SSIS或导入导出向导将其导入。@HLGEM:RedFilter提供的解决方案与我所寻找的非常接近,因为它是最直接的解决方案。但是感谢您的提示。仅供参考,您可以在Tools/Options/SQL Server Object Explorer/Scripting下关闭
USE Database
命令/常规脚本选项/脚本使用如果要将输出用作插入新记录的模板,或将identity_insert设置为on,则还需要手动从生成的T-SQL中删除任何标识列。