什么是每天从 Oracle 中刷新 SQL 服务器中的 table 15M 记录的最有效方法?

What is the most efficient way to refresh a table in SQL Server having 15M records from Oracle on daily basis?

我在 SQL 2012 年使用 LinkedServer 并每天使用以下过程从 Oracle 9G 刷新 table。 table中当前记录15M,每天增加2-3K条新记录,旧记录也在随机删除和更新。完成这项工作需要 7-8 个小时 overnight.Considering table 已经在 Oracle 端对索引级别进行了优化,尝试此操作的最有效方法是什么? 我目前的流程如下:

Truncate table SQLTable
Select * into SQLTable from openquery (LinkedServerName,'Select * from OracleTable')

仅仅为了 3000-8000 行的更改而截断 1500 万行是没有意义的。

我会考虑使用像 https://sourceforge.net/projects/pentaho/ 这样的 ETL 工具。您可以从免费的社区版开始。

此工具提供了一个 Spoon 工具,它主要提供图形界面来创建工作流。使用 Pan 工具,您可以执行使用勺子工具创建的文件。基本上使用 Pan 命令创建批处理文件并提供 .ktr 文件作为参数。现在,您可以使用 windows 任务管理器或 Unix CRON 作业安排此批处理文件。

有了这个,您可以创建一个工作流,它可以查找更改并仅插入或更新更改。