sqlldr direct load = true,带有引用分区选项

时间:2015-06-23 03:32:49

标签: sql oracle plsql oracle11g sql-loader

所以我需要在具有行级触发器的表中进行多次批量插入。我认为首先收集生成的ID,将它们与我的数据结合然后执行direct = true sql加载是个好主意。通常情况下这可以正常工作,但表是按引用分区的,所以它不能禁用允许我进行直接加载的外键约束。

有人知道这个吗?我的第一个批量收集到varray并插入每100,000个的解决方案速度适中,但如果我能够直接加载,那就会快得多。

  

错误:SQL * Loader-965:错误-1禁用约束client_fk on   table my_table

1 个答案:

答案 0 :(得分:0)

manual表示没有办法让SQL * Loader使用直接路径加载但不禁用外键。

但直接路径插入可以在引用分区表上工作,即使启用了外键,正如我在this question and answer中演示的那样。

将进程从SQL * Loader转换为外部表INSERT语句。 SQL * Loader和外部表使用类似的机制,因此转换不应该太困难。外部表需要更多工作 - 您必须使用附加提示编写INSERT,并手动禁用和重新启用触发器以及其他对象。但是,额外的控制允许使用直接路径插入快速加载数据。