Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 server 更快地将数据从DB2迁移到SQL Server的方法?_Sql Server_Sql Server 2008_Ssis_Data Migration - Fatal编程技术网

Sql server 更快地将数据从DB2迁移到SQL Server的方法?

Sql server 更快地将数据从DB2迁移到SQL Server的方法?,sql-server,sql-server-2008,ssis,data-migration,Sql Server,Sql Server 2008,Ssis,Data Migration,我正在使用链接服务器和开放查询将数据从DB2迁移到SQL Server,如下所示: --SET STATISTICS IO on -- Number of records are: 18176484 select * INTO [DBName].[DBO].Table1 FROM OPENQUERY(DB2, 'Select * From OPERATIONS.Table1') 插入此查询需要9小时17分钟(记录数18176484) 有没有其他方法可以更快地插入记录?我可以

我正在使用链接服务器和开放查询将数据从DB2迁移到SQL Server,如下所示:

  --SET STATISTICS IO on 
 -- Number of records are: 18176484
 select * INTO [DBName].[DBO].Table1
 FROM OPENQUERY(DB2,
    'Select * From OPERATIONS.Table1')
插入此查询需要9小时17分钟(记录数18176484)


有没有其他方法可以更快地插入记录?我可以使用“OpenRowSet”函数进行批量插入吗?或者SSIS包将提高性能并缩短时间?请提供帮助

您可能希望将数据导出到csv文件,如StackOverflow上的回答:

EXPORT TO result.csv OF DEL MODIFIED BY NOCHARDEL SELECT col1, col2, coln FROM testtable;
()


一旦它是CSV文件,您就可以使用BCP或SSI将其导入SQL Server,这两者都非常快,特别是如果您在目标表上使用文件锁。

我认为
批量插入
只需将插入过程分为几个批,可能无助于加快进程。还有其他建议吗?您在该表上有标识栏吗?如果是这样,您可以使用它将传输操作拆分为不同的批处理,使用标识作为了解已迁移哪些记录的关键。拆分成不同的批处理很可能有助于加快速度。由于您的
openquery
正在选择所有内容,因此无需再次尝试分布式查询,这可能会提高DB2系统的性能……不需要。但我们可以插入一个。如果我实现identity列,什么是更快的解决方案?我还没有尝试过这个。但CSV文件会保存10亿条记录吗?因为我有一个表有超过10亿条记录。一个CSV文件最多支持多少条记录?另外,我是否需要使用任何工具将数据从DB2导出到CSV?还是你的命令就行了?我需要从何处运行此命令?您可以拥有非常大的CSV文件,SQL Server不会有任何问题。我会做算术,并试图保持(以字节为单位的CSV文件的总大小)低于4千兆。您可以一次导出5000万行(取决于行大小),bcp将每个文件导入SQL Server。“export”命令是DB2中的标准(sic)命令。