最近、SQL ローダーの作業を開始し、その仕組みを楽しんでいます。すべての列を csv 形式 (Excel では 10 列) でロードする必要があるという問題に悩まされていますが、宛先テーブルには約 15 のフィールドが含まれています。ソースファイルの列をスキップしたいが、ここで何をすべきかわからない場合は、フィラーが機能します。ステージングテーブルを使用すると役立ちますが、代替手段はありますか?
どんな助けでも本当に感謝しています。ありがとう。
最近、SQL ローダーの作業を開始し、その仕組みを楽しんでいます。すべての列を csv 形式 (Excel では 10 列) でロードする必要があるという問題に悩まされていますが、宛先テーブルには約 15 のフィールドが含まれています。ソースファイルの列をスキップしたいが、ここで何をすべきかわからない場合は、フィラーが機能します。ステージングテーブルを使用すると役立ちますが、代替手段はありますか?
どんな助けでも本当に感謝しています。ありがとう。
制御ファイルで列を指定する必要があります
推奨資料: SQL*Loader 制御ファイル リファレンス
10 制御ファイルの残りの部分にはフィールド リストが含まれており、ロードされるテーブルの列形式に関する情報を提供します。制御ファイルのそのセクションについては、第 6 章を参照してください。
第6章からの抜粋:
1 (hiredate SYSDATE,
2 deptno POSITION(1:2) INTEGER EXTERNAL(2)
NULLIF deptno=BLANKS,
3 job POSITION(7:14) CHAR TERMINATED BY WHITESPACE
NULLIF job=BLANKS "UPPER(:job)",
mgr POSITION(28:31) INTEGER EXTERNAL
TERMINATED BY WHITESPACE, NULLIF mgr=BLANKS,
ename POSITION(34:41) CHAR
TERMINATED BY WHITESPACE "UPPER(:ename)",
empno POSITION(45) INTEGER EXTERNAL
TERMINATED BY WHITESPACE,
sal POSITION(51) CHAR TERMINATED BY WHITESPACE
"TO_NUMBER(:sal,'$99,999.99')",
4 comm INTEGER EXTERNAL ENCLOSED BY '(' AND '%'
":comm * 100"
)
このサンプル制御ファイルでは、左側に表示される番号は実際の制御ファイルには表示されません。このサンプルでは、次のリストの説明ノートに対応しています。
1 SYSDATE は、列を現在のシステム日付に設定します。列を現在の日付に設定するを参照してください。
2 POSITION は、データ フィールドの位置を指定します。データ フィールドの位置の指定を参照してください。
INTEGER EXTERNAL は、フィールドのデータ型です。データ フィールドのデータ型の指定および数値 EXTERNAL を参照してください。
NULLIF 句は、フィールド条件を指定するために使用できる句の 1 つです。WHEN、NULLIF、およびDEFAULTIF句の使用を参照してください。
このサンプルでは、BLANKS パラメーターを使用して、フィールドをブランクと比較しています。フィールドとブランクの比較を参照してください。
3 TERMINATED BY WHITESPACE 句は、フィールドに指定できる区切り文字の 1 つです。TERMINATED フィールドを参照してください。
4 ENCLOSED BY 句は、別の可能なフィールド区切り文字です。囲まれたフィールドを参照してください。