構造化されていないテーブルから構造化テーブルにデータを読み込むという奇妙な要件があります。非構造化テーブルは以下のようになります。PL SQLデータ読み込み問題
NUMBERID | MODEL| NAME | VALUE | CREATED_DT | LOADED_DT
1000 | BOE | AGT | 300 | 02-AUG-2016| 02-AUG-2016
1001 | AIR | ACT | 400 | 01-AUG-2016| 01-AUG-2016
1002 | EMB | ADT | 500 | 02-AUG-2016| 01-AUG-2016
1004 | REL | GTR | 140 | 01-AUG-2016| 01-AUG-2016
1005 | SIM | HJT | 140 | 01-JUL-2016| 28-JUL-2016
これは、表がどのように見え、何百万ものレコードを持つ方法です。今私は別の構造化テーブルにデータをロードする必要があります。そして、ここで本当のことが起こります。このデータは、毎日ETLジョブによってリフレッシュされます。私は二日前のデータをロードする必要があります。そこで、私はCREATED_DTを使ってsysdate-2を使ってデータを(MAX(NUMBERID)からMIN(NUMBERID)まで)集めてすべてのレコードを取得します。時々、新しいレコードはテーブルに作成されません、むしろVALUEはちょうど4日後に更新され、新しいシステムで新しい値を更新する必要があります。
したがって、どのようにしてベーステーブルと比較せずに値を識別できますか? また、LOADED_DTも更新される場合。この表には何百万ものレコードが含まれているので、どのように各バッチの10,000レコードにデータを分割できますか?
NUMBERIDのMINとMAXを使用する予定です。これを使用するとNUMBERIDの少ないレコードが挿入される可能性があるため、いくつかのレコードが欠落しています
ありがとうございました!
いいえ。オラクルはあなたのためにそのような仕事をしません。ジョブを正常に実行するために必要な独自の情報を維持する必要があります。 –
申し訳ありませんが、LOADED_DTも更新されます。この表には何百万ものレコードが含まれているので、どのように各バッチの10,000レコードにデータを分割できますか? NUMBERIDのMINとMAXを使用する予定です。これを使用するとNUMBERIDの少ないレコードが挿入される可能性があるため、一部のレコードが失われてしまいます。 –
これを更新するには、構造化されたOracle表を1つ作成してこの要件を達成しました。すべてのデータをそのテーブルに入れ、新しく作成したテーブルからレコードを処理しました。これはずっと簡単な選択肢でした。助けてくれてありがとう! –