S-JIS[2004-10-30/2004-11-15]

Oracle 固定長入力ファイル 生成ツール

for Excel by Excel2003

Oracleで固定長ファイルの内容をテーブルにロードする為のコントロールファイルを生成するツールです。

シートの所定の場所に値を記入した後に「生成ボタン」をクリックすると、固定長ファイル入力をする為のコントロールファイルを生成します。
このファイルを指定してsql*loaderを実行すると、テーブルにロードされます。

fixin.lzh(13.7 kBYTE) [/2004-11-15]


以下のような表から、SQL文を生成します。
項目一覧は、sql*plusからdescコマンドを使って表示したものをそのままコピー&ペーストするだけでOKです。

  A B C D E F  G 
1 固定長入力 CTLファイル名: c:\emp\emp_fix_in.ctl        
2 データファイル名: emp.txt        
3 BADファイル名:

emp.bad

       
4 モード APPEND        
5 スキップレコード数:          
6 ロードレコード数:          
7 許容エラー数: -1        
8 何件毎にコミット: -1        
9   テーブル名: EMP 位置 長さ 属性  
10   項目: EMPNO 1 4 DECIMAL EXTERNAL  
11     ENAME 5 10 CHAR  
12     JOB 15 9 CHAR  
13     MGR 24 4 DECIMAL EXTERNAL  
14     HIREDATE 28 8 DATE "YYYYMMDD"  
15     SAL 36 7 ZONED(7,2)  
16     COMM 43 7 CHAR "decode(:COMM,'',null,to_number(:COMM))"  
17     DEPTNO 50 2 DECIMAL EXTERNAL  
18              


c:\emp\emp_fix_in.ctl

OPTIONS(ERRORS=-1,ROWS=-1)
LOAD DATA
INFILE 'emp.txt'
BADFILE 'emp.bad'
APPEND
INTO TABLE EMP
TRAILING NULLCOLS
(
EMPNO POSITION( 1 : 4 ) DECIMAL EXTERNAL,
ENAME POSITION( 5 : 14 ) CHAR,
JOB POSITION( 15 : 23 ) CHAR,
MGR POSITION( 24 : 27 ) DECIMAL EXTERNAL,
HIREDATE POSITION( 28 : 35 ) DATE "YYYYMMDD",
SAL POSITION( 36 : 42 ) ZONED(7,2),
COMM POSITION( 43 : 49 ) CHAR "decode(:COMM,'',null,to_number(:COMM))",
DEPTNO POSITION( 50 : 51 ) DECIMAL EXTERNAL
)


sql*loaderから、このコントロールファイルを使ってロード

C:\emp>sqlldr scott/tiger@SID control=emp_fix_in.ctl

例)emp.txt

0   0         1        2   2       3      4      5  ←この行は説明の為の桁であり、実際の固定長ファイルの中には入れない
123456789012345678901234567890123456789012345678901 ←(スキップするなら、ファイルの中に入っていてもいいけど)
9000TEST      JOB      7566200410261234567       30
9001TEST2     JOB2     7566200410261234567    1.230

使わない項目に関しては、指定をしなくても大丈夫。(nullが入る)

   A   B  C  D   E  F  G 
15     SAL 36 7 ZONED(7,2)  
16     COMM        
17     DEPTNO 50 2 DECIMAL EXTERNAL  


c:\emp\emp_fix_in.ctl:

OPTIONS(ERRORS=-1,ROWS=-1)
LOAD DATA
INFILE 'emp.txt'
BADFILE 'emp.bad'
APPEND
INTO TABLE EMP
TRAILING NULLCOLS
(
EMPNO POSITION( 1 : 4 ) DECIMAL EXTERNAL,
ENAME POSITION( 5 : 14 ) CHAR,
JOB POSITION( 15 : 23 ) CHAR,
MGR POSITION( 24 : 27 ) DECIMAL EXTERNAL,
HIREDATE POSITION( 28 : 35 ) DATE "YYYYMMDD",
SAL POSITION( 36 : 42 ) ZONED(7,2),
--COMM,
DEPTNO POSITION( 50 : 51 ) DECIMAL EXTERNAL
)

ファイルに値が無い、あるいはファイルの値を使わないで特定の値を入れたい場合は、属性だけ指定する。

   A   B  C  D   E  F  G 
15     SAL 36 7 ZONED(7,2)  
16     COMM     CONSTANT 100  
17     DEPTNO 50 2 DECIMAL EXTERNAL  


c:\emp\emp_fix_in.ctl:

OPTIONS(ERRORS=-1,ROWS=-1)
LOAD DATA
INFILE 'emp.txt'
BADFILE 'emp.bad'
APPEND
INTO TABLE EMP
TRAILING NULLCOLS
(
EMPNO POSITION( 1 : 4 ) DECIMAL EXTERNAL,
ENAME POSITION( 5 : 14 ) CHAR,
JOB POSITION( 15 : 23 ) CHAR,
MGR POSITION( 24 : 27 ) DECIMAL EXTERNAL,
HIREDATE POSITION( 28 : 35 ) DATE "YYYYMMDD",
SAL POSITION( 36 : 42 ) ZONED(7,2),
COMM CONSTANT 100,
DEPTNO POSITION( 50 : 51 ) DECIMAL EXTERNAL
)

修正履歴

2004-11-15 「固定長入力」に「スキップレコード数」「ロードレコード数」「許容エラー数」「何件毎にコミット」を追加

自作ソフトページに戻る
メールの送信先:ひしだま