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 | 「固定長入力」に「スキップレコード数」「ロードレコード数」「許容エラー数」「何件毎にコミット」を追加 |