2015-10-17 55 views
0

我想做一个简单的数据库,其中一个表有一个外键引用该表中的另一列。甲骨文sqlldr当表具有自引用外键

我已经能够在添加这个约束之前用SQL * Loader(使用csv)正确加载数据,但是一旦我添加它,我无法用SQL * Loader加载数据(所有行都被拒绝)。

有没有办法解决这个问题?我在网上搜索了几个小时,而且我还没有发现任何非常具体的内容。我找到了直接路径加载的例子,但我不想假设在这个oracle实例上设置了直接路径加载(我使用的加载是常规的)。是否有一组步骤可以成功加载这些数据,或者是否有可以设置的参数来强制加载数据?

回答

0

这可以是解决问题的快速解决方法。编写一个Unix/Bat脚本来完成以下功能:

  1. 假设column1是主键字段,而column2是自引用外键字段。
  2. 将数据加载到没有自引用约束的临时表中。
  3. 现在从临时表插入到表中,但只应插入column1的不同值。在这个语句中,Column2应该填充为null。
  4. 使用自引用列2更新所有插入的表记录。由于所有不同的值已被输入,因此不会导致自引用键错误。