所以我需要在具有行级触发器的表中进行多次批量插入。我认为首先收集生成的ID,将它们与我的数据结合然后执行direct = true sql加载是个好主意。通常情况下这可以正常工作,但表是按引用分区的,所以它不能禁用允许我进行直接加载的外键约束。
有人知道这个吗?我的第一个批量收集到varray并插入每100,000个的解决方案速度适中,但如果我能够直接加载,那就会快得多。
错误:SQL * Loader-965:错误-1禁用约束client_fk on table my_table
答案 0 :(得分:0)
manual表示没有办法让SQL * Loader使用直接路径加载但不禁用外键。
但直接路径插入可以在引用分区表上工作,即使启用了外键,正如我在this question and answer中演示的那样。
将进程从SQL * Loader转换为外部表INSERT
语句。 SQL * Loader和外部表使用类似的机制,因此转换不应该太困难。外部表需要更多工作 - 您必须使用附加提示编写INSERT
,并手动禁用和重新启用触发器以及其他对象。但是,额外的控制允许使用直接路径插入快速加载数据。