SQLの窓

2009年11月19日


Oracle : 固定長データのSQL*Loader のサンプル

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 限定



posted by lightbox at 2009-11-19 15:58 | Oracle : 環境 | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり