外部表の列を動的に識別する
SQL ローダーを介して複数の法律 (米国、フィリピン、ラテンアメリカなど) から従業員データをアップロードするプロセスがあります。これは少なくとも週に 1 回発生し、現在のプロセスでは、従業員情報をロードするたびに制御ファイルを作成し、SQL*Loader を使用してそれをステージング テーブルにロードします。
外部テーブルを作成し、同時リクエストを実行してデータをステージング テーブルに入れることで、プロセスを簡素化したいと考えていました。私が遭遇している2つのつまずきのブロックがあります:
一部の法律で使用されていない列がいくつかあります。
例: 米国は列「Veteran_Information」を使用しますが、フィリピンとラテン アメリカは使用しません。フィリピンは「SSS_Number」を使用しますが、米国とラテンアメリカは使用しません。ラテン アメリカでは「Medical_Insurance」列を使用しますが、米国とフィリピンでは使用しません。以下のようなもの:
US: LEGISLATION, EMPLOYEE_NUMBER, DATE_OF_BIRTH, VETERAN_INFORMATION
PHL: LEGISLATION, EMPLOYEE_NUMBER, DATE_OF_BIRTH, SSS_NUMBER
LAT: LEGISLATION, EMPLOYEE_NUMBER, DATE_OF_BIRTH, MEDICAL_INSURANCE
ビジネス ユーザーは、標準の CSV テンプレート/形式を使用しません。
ファイルは非 IT ビジネス ユーザーによって送信されているため、通常は規定の形式に従っていません。(おそらくトレーニング/ユーザーの問題)。列の正しい順序に従っていないことが多い 列の正しい数に従っていないことが多い 列の正しい名前に従っていないことが多い 以下のようなもの:
US: LEGISLATION, EMPLOYEE_ID, VETERAN_INFORMATION, DATE_OF_BIRTH, EMAIL_ADD
PHL: EMP_NUM, LEGISLATION, DOB, SSS_NUMBER, EMAIL_ADDRESS
LAT: LEGISLATION, PS_ID, BIRTH_DATE, EMAIL, MEDICAL_INSURANCE
ファイル内の正しい順序/命名規則に従っていない場合でも、外部テーブルが列の正しい順序と命名を識別する方法はありますか?
問題 2 から列データを取得する:
US: LEGISLATION | EMPLOYEE_ID | VETERAN_INFORMATION | DATE_OF_BIRTH | EMAIL_ADD
US | 111 | No | 1967 | vet@gmail.com
PHL: EMP_NUM | LEGISLATION | DOB | SSS_NUMBER | EMAIL_ADDRESS
222 | PHL | 1898 | 456789 | pinoy@gmail.com
LAT: LEGISLATION | PS_ID | BIRTH_DATE | EMAIL | MEDICAL_INSURANCE
HON | 333 | 1956 | hon@gmail.com | Yes
外部テーブルに表示されるときは、次のようにしたいと思います。
LEGISLATION | EMPLOYEE_NUMBER | DATE_OF_BIRTH | VETERAN_INFORMATION | SSS_NUMBER | MEDICAL_INSURANCE | EMAIL_ADDRESS
US | 111 | 1967 | Y | (NULL) | (NULL) | vet@gmail.com
PHL | 222 | 1898 | (NULL) | 456789 | (NULL) | pinoy@gmail.com
HON | 333 | 1956 | (NULL) | (NULL) | Yes | hon@gmail.com
外部テーブルが上記のようなことをする方法はありますか?
前もって感謝します!