• ベストアンサー

SQL-LOADERについて

SQL-LOADERで質問があります。 あるファイルをSQL-LOADERで取り込もうとしたとき、先頭の1バイトが'1'の場合Aテーブルに、'2'の場合Bテーブルにinsertさせることは可能でしょうか? ご存知の方がいましたら、教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • bardfish
  • ベストアンサー率28% (5029/17766)
回答No.1

SQL*Loaderにそのような振り分け機能はありません。 おっしゃっているようなことを実現するためには、SQL_Loaderで読み込ませるファイルを作成するときに複数に分けることです。 つまり、 先頭の1バイトが'1'のA.txt 先頭の1バイトが'2'のB.txt それぞれを読み込むSQL*Loaderのバッチを作成すればOKです。

kiyoabc
質問者

お礼

早速の回答、ありがとうございます。 不可能ということで、、、非常に残念です、、、 明細部データの総件数と、トレーラ部にある件数が一致しているかどうかチェックしたかったのですが、、、、 二度SQL-LOADERを回すしかなさそうですね。 ありがとうございました。

その他の回答 (2)

  • DK10410
  • ベストアンサー率50% (2/4)
回答No.3

やりたいことを考慮するとSQL*Loaderよりは、UTL_FILEを使用してP/LSQLブロックもしくはProcedureで処理したほうが、Insertと同時に処理中にカウントや集計処理ができ、チェックもできるのでいいような気がしますが・・

kiyoabc
質問者

補足

ご回答ありがとうございます。 DK10410さんのおっしゃるとおりPL-SQLでやるほうがいろいろ出来るのですが、今回データ件数が200万件と多いため、SQL-LOADERで考えてみました。 ありがとうございました。

回答No.2

インサート先を作業用のテーブルにして、そのテーブルにインサートトリガを仕掛け、 2つのテーブルに振り分けることは可能です。(出来なくはないという意味ですが) ですが、2回の実行で問題ないのでしたら、#1で書かれているように対応するのが 合理的な解決です。

kiyoabc
質問者

お礼

ご回答ありがとうございます。 なるほど、トリガーを用意すれば確かに出来そうですね。 結局2回の実行での方向で考えてます。 時間は倍かかってしまうのが残念ですが、、、 ありがとうございました。

関連するQ&A