13亿条记录ETL优化Oracle到SQL Server

A C*_*ude 1 sql-server oracle optimization ssis etl

我有一个关于优化在 Oracle 和 SQL Server 之间传输 10 亿到 13 亿条记录(未来容量高达 20 亿条或更多记录)的好方法的问题。

*编辑*我忘了提到——这个过程需要每周运行一次,在 1 个周末的时间范围内。

目前我计划使用 ETL 包。我现在正在寻找 Talend 或 SSIS。

这里是数据设置。数据驻留在Oracle上,需要先采集再打包再传输。

目前我的流程是这样的: 1.) 一个存储过程提取所有数据并将其重新打包到一个 oracle 表中。2.) ETL 将扫描此表并将其移动到 SQL Server DB。3.) Oracle 和 SQL Server 上的表是相同的。

我正在寻找有关优化流程的一些想法。将插入优化到 SQLserver 的好方法是什么?

1.) 我想只是简单地将表放在 SQL Server 上,然后将表创建为 select * from oracle_table

2.) 重新设计存储过程,使其在 ETL 中运行(使我不必插入 oracle),然后直接插入 SQL Server -- 在使用 Talend 进行低容量测试时(我不能说 SSIS ) 我遇到了一些性能问题 - 重组过程需要更长的时间来提取数据,然后直接在 Oracle 上调用它。这是正常的,还是我搞砸了优化?

3.) 有没有更好的方法来进行我不知道的海量数据传输?

任何建议都会很棒。我认为链接服务器在这里是一种选择,但没有设置,而且我以前从未设置过。

任何要点/提示都会很棒,因为我对这整个事情还很陌生。

Kyl*_*ale 5

你最好的方法是:

  1. 将存储过程的结果直接推送到平面文件。
  2. 使用 bcp 或 BULK INSERT 将平面文件推送到 SQL 服务器。

如果您绝对需要 Oracle 中的表副本,那么我至少会比较以下性能:

  • 使用存储过程写入表
  • 使用 Bulk Loader 将生成的相同平面文件导入 Oracle