2015-10-17 57 views
0

我想做一個簡單的數據庫,其中一個表有一個外鍵引用該表中的另一列。甲骨文sqlldr當表具有自引用外鍵

我已經能夠在添加這個約束之前用SQL * Loader(使用csv)正確加載數據,但是一旦我添加它,我無法用SQL * Loader加載數據(所有行都被拒絕)。

有沒有辦法解決這個問題?我在網上搜索了幾個小時,而且我還沒有發現任何非常具體的內容。我找到了直接路徑加載的例子,但我不想假設在這個oracle實例上設置了直接路徑加載(我使用的加載是常規的)。是否有一組步驟可以成功加載這些數據,或者是否有可以設置的參數來強制加載數據?

回答

0

這可以是解決問題的快速解決方法。編寫一個Unix/Bat腳本來完成以下功能:

  1. 假設column1是主鍵字段,而column2是自引用外鍵字段。
  2. 將數據加載到沒有自引用約束的臨時表中。
  3. 現在從臨時表插入到表中,但只應插入column1的不同值。在這個語句中,Column2應該填充爲null。
  4. 使用自引用列2更新所有插入的表記錄。由於所有不同的值已被輸入,因此不會導致自引用鍵錯誤。