INFILE のオプションで固定レコードである事を指定しています。固定レコードのデータは、C 言語で出力した事を想定して作成しています。位置指定かデータ型指定でデータの位置が計算されて処理されます。 FILLER は、データベース列と関連しない列を明示する為に使用します( COBOL と同様 ) 位置指定は N:N と N-N は同等で、位置番号を示すのでレコードレイアウトがある場合に簡単に指定できます。 ▼レコードレイアウト例関連する記事 Oracle : SQL*Loader のサンプル 位置指定には他にも以下のようなものがあります * : 直前の位置から始まる +N : 終了位置直後の位置から現行のフィールドをオフセットする
0 1 2 3 4 5 6 7 8 9 A B C D E F -------------------------------------------------------------------------- 00000000 30 31 30 31 8E 52 93 63 8C 4E 00 00 00 00 00 00 0101山田君...... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 FF B0 1E 04 00 32 30 30 39 2F .......ー...2009/ 00000040 30 31 2F 30 31 01/01
LOAD DATA INFILE '社員マスタ.dat' "FIX 69" -- ************************************************** -- BADFILE : 拒否レコード -- ************************************************** BADFILE 'lightbox.bad' -- ************************************************** -- DISCARDFILE : 廃棄ファイル -- ************************************************** DISCARDFILE 'lightbox.dsc' -- ************************************************** -- APPEND : 追加 -- REPLACE : 削除後追加( 削除トリガーが起動 ) -- TRUNCATE : TRUNCATE 後追加( 最大限のパフォーマンス ) -- ************************************************** APPEND INTO TABLE "社員マスタ" WHEN "社員コード" != '0005' -- ************************************************** -- ■ TRAILING NULLCOLS -- 相対位置に指定した列がレコード中に存在しない場合 -- その列の値はNULLとして処理されます -- ************************************************** TRAILING NULLCOLS -- -- --create table "社員マスタ2" ( -- "社員コード" VARCHAR2(4) -- ,"氏名" VARCHAR2(50) -- ,"フリガナ" VARCHAR2(50) -- ,"所属" VARCHAR2(4) -- ,"性別" NUMBER(15) -- ,"作成日" DATE -- ,"更新日" DATE -- ,"給与" NUMBER -- ,"手当" NUMBER -- ,"管理者" VARCHAR2(4) -- ,"生年月日" DATE --) -- -- ( "社員コード" CHAR(4) ,"氏名" POSITION(5:54) CHAR NULLIF "氏名"=BLANKS ,"不要部分定義" FILLER POSITION(55:55) CHAR ,"給与" POSITION(56-59) INTEGER(4) NULLIF "給与"=BLANKS ,"生年月日" POSITION(60-69) DATE "YYYY/MM/DD" NULLIF "生年月日"=BLANKS )
▼ ログ
SQL*Loader: Release 10.2.0.1.0 - Production on 木 11月 19 15:46:04 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. 制御ファイル: syain.ctl データファイル社員マスタ.dat ファイル処理オプション文字列: "FIX 69" 不良ファイル: lightbox.bad 廃棄ファイル: lightbox.dsc (すべて廃棄できます) ロード数: ALL スキップ数: 0 許容エラー数: 50 バインド配列: 64行、最大256000バイト 継続文字: 指定なし 使用パス: 従来型 表"社員マスタ"、 ロード済 時 "社員コード" != 0X30303035(文字 '0005') この表に対する有効な挿入オプション: APPEND TRAILING NULLCOLSオプションは有効です。 Column Name Position Len Term Encl Datatype ------------------------------ ---------- ----- ---- ---- --------------------- "社員コード" FIRST 4 CHARACTER "氏名" 5:54 50 CHARACTER NULL if "氏名" = BLANKS "不要部分定義" 55:55 1 CHARACTER (FILLERフィールド) "給与" 56:59 4 INTEGER NULL if "給与" = BLANKS "生年月日" 60:69 10 DATE YYYY/MM/DD NULL if "生年月日" = BLANKS 表"社員マスタ": 1行のロードに成功しました。 0行はデータ・エラーのためロードされませんでした。 0行はWHEN句のエラーのためロードされませんでした。 0行はすべてのフィールドがNULLのためロードされませんでした。 バインド配列に割り当てられた領域: 4736バイト(64行) 読取りバッファのバイト数: 1048576 スキップされた論理レコードの合計: 0 読み込まれた論理レコードの合計: 1 拒否された論理レコードの合計: 0 廃棄された論理レコードの合計: 0 実行開始木 11月 19 15:46:04 2009 実行終了木 11月 19 15:46:04 2009 実行時間: 00: 00: 00.17 CPU時間 : 00: 00: 00.10
関連する Oracle へのリンク SQL*Loader : 制御ファイル・リファレンス SQL*Loader : フィールド・リスト・リファレンス Windows 限定
|
【Oracle : 環境の最新記事】
- Oracle : ユーザ(スキーマ)の作成
- Oracle SQLPlus でスキーマの作成
- Oracle 11g 学習環境の作成 : SQLPlus の環境作成
- Oracle に学習用DB の 販売管理C.mdb をインポートする
- Oracle11g をXPモード内でインストールして仮想PCとして複製する
- Oracle11g + Windows : PC名を変更してしまった場合の対処方法
- Oracle : ローカル・ネーミング・メソッドによる接続( tnsnames.ora を直接変更 )
- Oracle : SQL*Loader のサンプル
- リモートのOracle にsysdba で入る
- Oracle : ディレクトリオブジェクト
- 簡易ネーミングメソッドが使え無い