Oracle:将大型数据集插入表中

时间:2012-01-26 03:38:30

标签: sql oracle insert

我需要将来自不同远程数据库的数据加载到我们自己的数据库中。我使用WITH语句编写一个“复杂”查询。它大约有1800万行数据。

进行插入的最有效方法是什么?

  1. 逐个使用光标插入
  2. 使用INSERT INTO
  3. 还是有其他方法吗?

4 个答案:

答案 0 :(得分:4)

最快的方法是使用单个SQL语句。下一个最有效的方法是使用游标执行BULK COLLECT操作来最小化SQL和PL / SQL引擎之间的上下文转换。效率最低的方法是使用游标并逐行处理数据。

答案 1 :(得分:1)

正如Justin所写,最有效的方法是使用单个SQL语句(插入... select ...)。此外,您还可以利用direct-path insert

答案 2 :(得分:0)

1800万行将需要针对您的单个插入stmt方案进行相当多的回滚。循环游标会慢很多,但你可以提交每x行。

就个人而言,我会去读书并转储到文件并通过sqlldr或数据泵加载,因为这是跨数据库的。

答案 3 :(得分:0)

您可以使用Data Synchronisation Studio并将select语句更改为每次100万(我认为18m可能会使您的计算机过载)