当表具有自引用外键时,Oracle sqlldr

时间:2015-10-17 22:25:23

标签: database oracle

我正在尝试创建一个简单的数据库,其中一个表具有引用该表中另一列的外键。

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

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

1 个答案:

答案 0 :(得分:0)

这可以是解决此问题的快速解决方法。编写Unix / Bat脚本来执行以下功能:

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