0

外部表の列を動的に識別する

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

外部テーブルが上記のようなことをする方法はありますか?

前もって感謝します!

4

1 に答える 1