Sql server 更快地将数据从DB2迁移到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) 有没有其他方法可以更快地插入记录?我可以
--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)命令。