Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用从表中收集的值创建SQL插入脚本_Sql_Sql Server 2008 - Fatal编程技术网

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

使用从表中收集的值创建SQL插入脚本,sql,sql-server-2008,Sql,Sql Server 2008,我需要创建一个INSERT脚本,以便在另一个数据库中插入相同的数据。如果在SQL Server中选择“script table as>INSERT to”,我可以轻松地为INSERT语句重新创建框架。但是,因为我有几个记录要迁移,所以我宁愿避免手动插入值 因此,是否有任何方法可以“自动”获取插入脚本并填充值(来自目标表)? 我知道SSIS可以做到这一点,但我想知道是否也可以使用更快的解决方案。使用免费的 或者在SSMS中(这台电脑上不需要确认),导出向导也允许您“编写数据脚本”使用插入到。。。选

我需要创建一个INSERT脚本,以便在另一个数据库中插入相同的数据。
如果在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中删除任何标识列。