【问题标题】:Quicker ways to migrate data from DB2 to SQL Server?将数据从 DB2 迁移到 SQL Server 的更快方法?
【发布时间】:2017-08-20 13:15:58
【问题描述】:

我正在使用链接服务器和打开查询将数据从 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 包会提高性能并且需要更少的时间?请帮忙

【问题讨论】:

  • 我认为bulk insert 只是将您的插入过程分成几批,可能无助于加快过程
  • 还有什么建议吗?
  • 那张桌子上有标识列吗?如果是这样,您可以使用它将传输操作分成不同的批次,使用身份作为了解您已经迁移的记录的关键。分成不同的批次很可能有助于加快速度。
  • 由于您的openquery 正在选择所有内容,因此无需再次尝试分布式查询,可能会提高 DB2 系统的性能...
  • 没有。但是我们可以插入一个。如果我实现标识列,更快的解决方案是什么?

标签: sql-server sql-server-2008 ssis data-migration


【解决方案1】:

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

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

(Exporting result of select statement to CSV format in DB2)

一旦它是 CSV 文件,您可以使用 BCP 或 SSIS 将其导入 SQL Server,这两种方法都非常快,尤其是在您对目标表使用文件锁定时。

【讨论】:

  • 这个我没试过。但是 CSV 文件会保存 1Billon 的记录吗?因为我有一张表有超过 10 亿条记录。一个 CSV 文件最多支持多少条记录?另外,我是否需要使用任何工具将数据从 DB2 导出到 CSV?或者只是你的命令会起作用?我需要从哪里运行这个命令?
  • 您可以拥有非常大的 CSV 文件,SQL Server 不会有任何问题。我会做算术并尝试将(以字节为单位的 CSV 文件的总大小)保持在 4 gig 以下。您可以一次导出 5000 万行(取决于行大小),然后 bcp 将每个文件导入 SQL Server。 “export”命令是 DB2 中的标准(原文如此)命令。
猜你喜欢
  • 2012-06-13
  • 2011-07-02
  • 2012-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
  • 2018-08-01
  • 2013-02-08
相关资源
最近更新 更多