ビルドプロセス中に、sqlldrを実行して、データベースにサンプルデータを入力します。sqlldrがアクセスするすべてのテーブルで、sqlldrの実行後に外部キーが無効になります。
このAskTomの投稿によると:
sqlldrは、主キーではなく、他のテーブル(外部キーなど)に関連する制約のみを無効にします。
SQLLDRは、ITが無効にした制約のみを再度有効にし、自分で行った制約は再度有効にしません。
これは、外部キーを有効にする必要があることを意味します。
すべてのsqlldr制御ファイルは次のファイルに似ています。
options (direct=true, rows=20000)
load data
infile "clinical_code.txt"
append
into table clinical_code
fields terminated by "|"
trailing nullcols
カウントは、データファイルのrows
行数よりも意図的に大きくなっています。これは、小さい場合、主キーが破損しているためです。
ドキュメントが示唆しているように、sqlldrが外部キーを再度有効にしないのはなぜですか?
必要に応じてインデックスを再度有効にするSQLを作成しています。なぜこれが起こっているのか知りたいのですが。
従来のロードパスを使用することも問題ありませんが、ビルドプロセスに2分かかるため、可能であればそれを避けたいと思います。