콘텐츠로 이동

3. FORM 파일#

FORM 파일이란?#

FORM 파일은 iLoader에게 로드할 테이블과 속성에 대한 정보를 알려주기 위한 파일로서 Create Table 구문과 유사한 내용을 갖는다. iLoader를 이용해서 자동으로 생성할 수도 있고, 직접 편집하여 아래의 부가적인 옵션을 명시하여 사용할 수도 있다.

  • SEQUENCE sequence_name column_name [NEXTVAL | CURRVAL ]

  • DATEFORM date_format

  • DOWNLOAD CONDITION "WHERE condition"

  • DATA_NLS_USE=US7ASCII

  • NCHAR_UTF16=YES

SEQUENCE 작성#

FORM 파일을 수정하여 SEQUENCE를 적용할 수 있다.

FORM 파일 수정 방법은 SEQUENCE 라고 쓴 다음 sequence 이름, 적용될 칼럼 이름, nextval 이나 currval 등의 의사 열 순서로 FORM 파일에 맨 앞에 적는다.

SEQUENCE  sequence_name  column_name  [ NEXTVAL | CURRVAL ]

의사 열의 값의 기본 값은 nextval이다. 적용할 수 있는 최대 칼럼 수는 8개이다.

FORM 파일의 기본적인 형태는 다음과 같으며 테이블에 데이터 타입이 date인 칼럼이 존재하면 date format이 기본으로 설정된다.

table sample
{
A numeric (10);
B numeric (10, 4);
C char (10);
D varchar (10);
E date;
}
DATEFORM YYYY/MM/DD HH:MI:SS:SSSSSS

예제#

iSQL> CREATE TABLE seqTable(
  num INTEGER,
  name VARCHAR(30));
Create success.
iSQL> INSERT INTO seqTable VALUES(1, 'JANE');
1 row inserted.
iSQL> INSERT INTO seqTable VALUES(2, 'SARA');
1 row inserted.
iSQL> CREATE SEQUENCE seq1
    START WITH 30 INCREMENT BY 2
    MINVALUE 0 NOMAXVALUE;
Create success.

iLoader> formout -T seqTable -f seqTable.fmt
$ vi seqTable.fmt
SEQUENCE seq1 NUM       <- 수정부분
table seqTable
{
"NUM" integer;
"NAME" varchar (30);
}
DATA_NLS_USE=KO16KSC5601

iSQL> INSERT INTO seqTable(name) VALUES('JOHN');
1 row inserted.
iSQL> INSERT INTO seqTable(name) VALUES('JOHNSON');
1 row inserted.
iSQL> SELECT * FROM seqTable;
SEQTABLE.NUM SEQTABLE.NAME                   
-----------------------------------------------
1           JANE                            
2           SARA                            
            JOHN                            
            JOHNSON                         
4 rows selected.

FORM 파일을 이용하여 seqTable 테이블을 백업한 후, 백업 파일을 살펴본다.

iLoader> out -f seqTable.fmt -d seqTable.dat
DATA_NLS_USE: KO16KSC5601

Total 4 record download(SEQTABLE)

DOWNLOAD : 53.4390 msec

$ cat seqTable.dat
1,"JANE"
2,"SARA"
,"JOHN"
,"JOHNSON"

백업 받은 파일을 현재의 데이터베이스에 업로드 할 때 다음 구문을 이용한다.

iLoader> in -f seqTable.fmt -d seqTable.dat -mode replace
DATA_NLS_USE: KO16KSC5601

UPLOAD: 16467

Load Count  : 4

seqTable 테이블의 레코드를 검색해 보면 다음과 같은 결과를 얻을 수 있다.

iSQL> SELECT * FROM seqTable;
SEQTABLE.NUM SEQTABLE.NAME                   
-----------------------------------------------
30          JANE                            
32          SARA                            
34          JOHN                            
36          JOHNSON                         
4 rows selected.

DATE FORMAT 작성#

데이터 타입이 date인 칼럼에 대해서 대·소문자를 구별하지 않고 다음과 같이 format을 설정하여 해당 format대로 다운로드 또는 업로드할 수 있다.

FORM 파일 수정 시 맨 마지막에 기술하여야 하며, 기본 포맷은 DATEFORM YYYY/MM/DD HH:MI:SS:SSSSSS 이다.

dateFORM YYYY-MM-DD HH:MI:SS:SSSSSS
dateFORM YYYY/MM/DD HH:MI:SS:SSSSSS
dateFORM YY/MM/DD HH:MI:SS:SSSSSS
dateFORM YY-MM-DD HH:MI:SS:SSSSSS
dateFORM YYYYMMDDHHMISSSSSSSS
dateFORM YYMMDDHHMISSSSSSSS
dateFORM YY
dateFORM YYYY
dateFORM YYMMDD
dateFORM YYYYMMDD
dateFORM HHMISSSSSSS
dateFORM HH:MI:SS:SSSSS
dateFORM HH:MI:SS

주어진 dateformat 이외에 사용자가 새로운 서식을 설정하고 싶은 경우, 작은 따옴표 ('와 ')를 이용하여 dateformat을 확장해서 사용할 수 있다. 예를 들어 년 월 일 이나 공백(space) 등 구분자를 사용해 format을 설정하길 원하면 dateFORM 'YY년 MM월 DD일' 또는 dateFORM 'YYYY MM DD' 등으로 쓸 수 있다.

iSQL> CREATE TABLE t1(
  i1 INTEGER,
  i2 DATE,
  i3 INTEGER);
Create success.
iSQL> INSERT INTO t1 VALUES(1, to_date('2002-01-23 10:11:12:222222', 'YYYY-MM-DD HH:MI:SS:SSSSSS'), 1);
1 row inserted.
iSQL> INSERT INTO t1 VALUES(2, to_date('2002-01-23 13:14:15:333333', 'YYYY-MM-DD HH:MI:SS:SSSSSS'), 2);
1 row inserted.
iSQL> INSERT INTO t1 VALUES(3, to_date('2002-01-23 16:17:18:444444',  'YYYY-MM-DD HH:MI:SS:SSSSSS'), 3);
1 row inserted.
iSQL> SELECT TO_CHAR(i2, 'YYYY-MM-DD HH:MI:SS:SSSSSS') TESTDATE FROM t1;

TESTDATE                                            
-----------------------------------------------
2002-01-23 10:11:12:222222                          
2002-01-23 13:14:15:333333                          
2002-01-23 16:17:18:444444                          
3 rows selected.

생성한 FORM 파일을 다음과 같이 수정한다.

iLoader> formout -T t1 -f t1.fmt

$ vi t1.fmt 
table t1
{
I1 integer;
I2 date;
I3 integer;
}
DATEFORM YYYY-MM-DD HH:MI:SS:SSSSSS   <- 수정부분 DATA_NLS_USE=KO16KSC5601

FORM 파일을 이용하여 t1 테이블을 파일로 백업한 후 파일을 살펴보면,

iLoader> out -f t1.fmt -d t1.dat
DATE FORMAT : YYYY-MM-DD HH:MI:SS:SSSSSS
DATA_NLS_USE: KO16KSC5601

Total 3 record download(T1)

DOWNLOAD : 982.0000 usec

$ cat t1.dat
1,"2002-01-23 10:11:12:222222",1
2,"2002-01-23 13:14:15:333333",2
3,"2002-01-23 16:17:18:444444",3

백업 받은 파일을 현재의 데이터베이스에 업로드할 때 다음 구문을 이용한다.

iLoader> in -f t1.fmt -d t1.dat -mode replace
DATE FORMAT : YYYY-MM-DD HH:MI:SS:SSSSSS
DATA_NLS_USE: KO16KSC5601

UPLOAD: 4026

Load Count  : 3

TO_CHAR 함수를 이용해서 t1 테이블의 레코드를 검색하면 다음과 같은 결과를 얻을 수 있다.

iSQL> SELECT TO_CHAR(i2, 'YYYY-MM-DD HH:MI:SS:SSSSSS') TESTDATE FROM t1;
TESTDATE                                            
-----------------------------------------------
2002-01-23 10:11:12:222222                          
2002-01-23 13:14:15:333333                          
2002-01-23 16:17:18:444444                          
3 rows selected.

단, 데이터를 업로드할 때 주의할 사항은 데이터를 다운받은 후에는 생성된 FORM 파일의 date format과 같아야 한다.

DATE FORMAT 환경변수#

FORM 파일 구조에서 DATEFORM과 같은 역할을 하는 환경 변수를 다음과 같이 설정할 수 있다. 예를 들어, Born, Korn, 또는 Bash Shell의 경우

$ export ILO_DATEFORM='YYYY-MM-DD'

DATE FORMAT을 칼럼 별로 지정하는 방법#

데이터 타입이 DATE인 칼럼에 대해서 칼럼의 형식이 다를 경우, 대·소문자 구별 없이 FORM 파일 수정 시 DATE 타입 뒤에 DATEFORM "날짜 형식"을 명시하여 해당 형식대로 다운·업로드 할 수 있다.

iSQL> CREATE TABLE t1 (i1 INTEGER, i2 DATE, i3 DATE, i4 DATE);
Create success.
iSQL> INSERT INTO t1 VALUES (1,
TO_DATE('2004/11/24 09:55:30 181133','YYYY/MM/DD HH:MI:SS SSSSSS'),
TO_DATE('2004/11/25 09:55:30 181133','YYYY/MM/DD HH:MI:SS SSSSSS'),
TO_DATE('2004/11/26 09:55:30 181133','YYYY/MM/DD HH:MI:SS SSSSSS'));
1 row inserted.
iSQL> SELECT * FROM t1;
T1.I1               T1.I2
T1.I3       T1.I4                
-----------------------------------------------
1               2004/11/24 09:55:30  2004/11/25 09:55:30     2004/11/26 09:55:30  
1 row selected.

$ iloader formout -s 127.0.0.1 -u sys -p manager -T t1 -f t1.fmt;

$ vi t1.fmt 
table t1
{
"I1" integer;
"I2" date DATEFORM "YYYY-MM-DD"; <- 수정부분
"I3" date;
"I4" date DATEFORM "YYYY/MM/DD HH:MI:SS SSSSSS"; <- 수정부분
}
DATEFORM YYYY/MM/DD HH:MI:SS:SSSSSS
DATA_NLS_USE=KO16KSC5601

$ iloader out -s 127.0.0.1 -u sys -p manager -f t1.fmt -d t1.dat;
DATE FORMAT : YYYY/MM/DD HH:MI:SS
DATA_NLS_USE: KO16KSC5601

Total 1 record download
DOWNLOAD: 25893

$ cat t1.dat
1,"2004-11-24","2004/11/25 09:55:30","2004/11/26 09:55:30 181133"

$ iloader in -s 127.0.0.1 -u sys -p manager -f t1.fmt -d t1.dat;
DATE FORMAT : YYYY/MM/DD HH:MI:SS
DATA_NLS_USE: KO16KSC5601

UPLOAD: 3556

Load Count  : 1

iSQL> SELECT * FROM t1;
T1.I1       T1.I2                T1.I3                T1.I4                
-----------------------------------------------
1           2004/11/24 09:55:30  2004/11/25 09:55:30  2004/11/26 09:55:30  
1           2004/11/24 00:00:00  2004/11/25 09:55:30  2004/11/26 09:55:30  
2 rows selected.
iSQL> SELECT TO_CHAR(I2,'YYYY/MM/DD HH:MI:SS SSSSSS') FROM t1;
TO_CHAR(I2,'YYYY/MM/DD HH:MI:SS SSSSSS')            
-----------------------------------------------
2004/11/24 09:55:30 181133                          
2004/11/24 00:00:00 000000                          
2 rows selected.
iSQL> SELECT TO_CHAR(I3,'YYYY/MM/DD HH:MI:SS SSSSSS') FROM t1;
TO_CHAR(I3,'YYYY/MM/DD HH:MI:SS SSSSSS')            
-----------------------------------------------
2004/11/25 09:55:30 181133                          
2004/11/25 09:55:30 000000                          
2 rows selected.
iSQL> SELECT TO_CHAR(I4,'YYYY/MM/DD HH:MI:SS SSSSSS') FROM t1;
TO_CHAR(I4,'YYYY/MM/DD HH:MI:SS SSSSSS')            
-----------------------------------------------
2004/11/26 09:55:30 181133                          
2004/11/26 09:55:30 181133                          
2 rows selected.

* 참고 : 날짜 포맷 명시 방법은 아래에 나열한 순서대로 우선 순위를 가진다.

  • FORM 파일의 DATE 칼럼 뒤에 명시

  • 환경변수 ILO_DATEFORM

  • FORM 파일내의 DATEFORM 명시

함수 실행 기능#

데이터를 업로드 할 때, 특정 칼럼에 함수를 이용하여 넣고자 할 때 사용한다. 데이터 타입이 DATE, TIMESTAMP, GEOMETRY일 때는 적용되지 않는다. FORM 파일 수정 시 다른 옵션의 마지막에 넣어야 하며 ""로 감싸주어야 한다. 또한 칼럼이 바인드될 위치는 ?로 지정해 주어야 한다.

$ vi t2.fmt
table t2
{
"I1" integer "trim(?)";   < - 수정부분
"I2" varchar(10) "trim(?)";   < - 수정부분
"I3" varchar(10) "concat(trim(?),'value')";   < - 수정부분
}

조건절 작성#

FORM 파일을 수정하여, 테이블의 데이터들을 다운로드 할 때 조건절을 적용할 수 있다. 성능 향상을 위한 힌트도 추가로 지정할 수 있다.

"DOWNLOAD CONDITION" 이라고 쓴 다음 조건절을 큰 따옴표(" ") 안에 지정하며 FORM파일 맨 마지막에 기술한다. 사용자가 지정한 힌트와 조건절이 제대로 동작하는지 알아보기 위해 수행 시에 "-displayquery" 옵션을 사용해서 실행되는 쿼리를 확인할 수 있다.

구문#

DOWNLOAD CONDITION  "Where_conditions_clause" [HINT "hint_string"]

Where_conditions_clause : SELECT 구문의 WHERE 절과 동일한 형태로 조건을 지정한다.

hint_string : SELECT 구문의 HINT 구문과 동일한 형식으로 HINT를 지정한다.

예 제#

iSQL> CREATE TABLE table1(
   t1 INTEGER,
   t2 INTEGER,
   t3 DATE);
Create success.
iSQL> INSERT INTO table1 VALUES(1, 1, '01-May-2002');
1 row inserted.
iSQL> INSERT INTO table1 VALUES(2, 2, '02-Jun-2002');
1 row inserted.
iSQL> INSERT INTO table1 VALUES(3, 3, '03-Apr-2002');
1 row inserted.
iSQL> INSERT INTO table1 VALUES(4, 4, '04-Sep-2002');
1 row inserted.
iSQL> INSERT INTO table1 VALUES(5, 5, '05-Oct-2002');
1 row inserted.
iSQL> SELECT * FROM table1;
TABLE1.T1   TABLE1.T2   TABLE1.T3            
-----------------------------------------------
1           1           2002/05/01 00:00:00  
2           2           2002/06/02 00:00:00  
3           3           2002/04/03 00:00:00  
4           4           2002/09/04 00:00:00  
5           5           2002/10/05 00:00:00  
5 rows selected.

FORM 파일을 생성한다.

iLoader> formout -T table1 -f table1.fmt

그리고 FORM 파일을 다음과 같이 수정한다.

$ vi table1.fmt 
table table1
{
"T1" integer;
"T2" integer;
"T3" date;
}
DATEFORM YYYY/MM/DD HH:MI:SS:SSSSSS
DATA_NLS_USE=KO16KSC5601
DOWNLOAD CONDITION "where t1 > 2"    <- 수정부분

FORM 파일을 이용하여 table1 테이블을 파일로 백업한 후 파일을 살펴보면, 조건절이 적용된 결과를 확인할 수 있다.

iLoader> out -f table1.fmt -d table1.dat
DATE FORMAT : YYYY/MM/DD HH:MI:SS
DATA_NLS_USE: KO16KSC5601

Total 3 record download(TABLE1)

DOWNLOAD : 1.4150 msec 

$ cat table1.dat
3,3,"2002/04/03 00:00:00"
4,4,"2002/09/04 00:00:00"
5,5,"2002/10/05 00:00:00"

TIMESTAMP 칼럼 입력 기능#

iLoader를 이용하여 현재의 Altibase에서 데이터 파일을 다운로드한 후, data 파일의 TIMESTAMP 칼럼에 해당하는 값을 다음과 같은 옵션을 이용하여 FORM 파일을 수정하여 데이터를 업로드 할 수 있다.

  • ADD DEFAULT

  • ADD NULL

  • ADD YYYYMMDD[HHMISS]

  • SKIP DEFAULT

  • SKIP NULL

  • SKIP YYYYMMDD[HHMISS]

다음은 위의 옵션을 이용하여 서버에 있는 테이블의 자료를 파일에 다운로드한 후, 다시 테이블로 자료를 업로드하는 방법이다.

  • 현재의 Altibase 데이터베이스에서 다운로드할 테이블을 FORM 파일로 생성한다.

  • 생성한 FORM 파일을 이용하여 현재 데이터베이스에서 해당하는 테이블의 데이터를 파일로 백업한다.

  • 아래 경우에 따라 업로드 할 FORM 파일을 수정한다.

Data 파일에 TIMESTAMP 칼럼에 해당하는 값이 없는 경우#

  • Data 파일에는 없지만 TIMESTAMP 칼럼에 현재 시간을 입력할 경우: 업로드 할 FORM 파일의 TIMESTAMP 칼럼 마지막에 "ADD DEFAULT" 기술(또는 FORM 파일의 TIMESTAMP 칼럼 라인 삭제)

  • Data 파일에는 없지만 TIMESTAMP 칼럼에 NULL 값을 입력할 경우: 업로드 할 FORM 파일의 TIMESTAMP 칼럼 마지막에 "ADD NULL" 기술

  • Data 파일에는 없지만 TIMESTAMP 칼럼에 지정한 값을 입력할 경우: 업로드 할 FORM 파일의 TIMESTAMP 칼럼 마지막에 "ADD YYYYMMDD[HHMISS]" 기술

    YYYYMMDD[HHMISS]
    ADD 20040623
    ADD 20040623102315
    

Data 파일에 TIMESTAMP 칼럼에 해당하는 값이 있는 경우#

  • Data 파일에 있는 값을 무시하고 현재 시간을 입력할 경우: 업로드 할 FORM 파일의 TIMESTAMP 칼럼 마지막에 "SKIP DEFAULT" 기술
  • Data 파일에 있는 값을 무시하고 NULL 값을 입력할 경우: 업로드 할 FORM 파일의 TIMESTAMP 칼럼 마지막에 "SKIP NULL" 기술

  • Data 파일에 있는 값을 무시하고 지정한 값을 입력할 경우: 업로드 할 FORM 파일의 TIMESTAMP 칼럼 마지막에 "SKIP YYYYMMDD[HHMISS]" 기술

예제#

편집한 FORM 파일을 이용하여 현재의 데이터베이스에 업로드 한다.

ADD DEFAULT#
iSQL> CREATE TABLE test(i1 INTEGER);
Create success.
iSQL> CREATE TABLE test2 (i1 INTEGER,
        i2 TIMESTAMP);
Create success.
iSQL> INSERT INTO test VALUES(1);
1 row inserted.
iSQL> INSERT INTO test VALUES(2);
1 row inserted.
iSQL> INSERT INTO test VALUES(3);
1 row inserted.

$ iloader formout -s 127.0.0.1 -u sys -p manager -T TEST -f test.fmt;

$ iloader out -s 127.0.0.1 -u sys -p manager  -f test.fmt -d test.dat;

DATA_NLS_USE: KO16KSC5601

Total 3 record download(TEST)

DOWNLOAD : 728.0000 usec

$ cat test.dat
1
2
3

$ iloader formout -s 127.0.0.1 -u sys -p manager -T TEST2 -f t2_add_default.fmt;

$ vi t2_add_default.fmt
table TEST2
{
"I1" integer;
"I2" timestamp ADD DEFAULT; <= 수정 부분
}
DATEFORM YYYY/MM/DD HH:MI:SS:SSSSSS
DATA_NLS_USE=KO16KSC5601

$ iloader in -s 127.0.0.1 -u sys -p manager  -f t2_add_default.fmt -d test.dat;

DATE FORMAT : YYYY/MM/DD HH:MI:SS
DATA_NLS_USE: KO16KSC5601

UPLOAD : 8.8130 msec

Load Count  : 3(TEST2)

iSQL> SELECT * FROM test2;
I1          I2
---------------------------------
1           4F179985000B5290
2           4F179985000B52E1
3           4F179985000B5310
3 rows selected.
ADD NULL#
iSQL> CREATE TABLE test (i1 INTEGER);
Create success.
iSQL> CREATE TABLE test2 (i1 INTEGER,
        i2 TIMESTAMP);
Create success.
iSQL> INSERT INTO test VALUES(1);
1 row inserted.
iSQL> INSERT INTO test VALUES(2);
1 row inserted.
iSQL> INSERT INTO test VALUES(3);
1 row inserted.

$ iloader formout -s 127.0.0.1 -u sys -p manager -T TEST -f test.fmt;

$ iloader out -s 127.0.0.1 -u sys -p manager  -f test.fmt -d test.dat;

DATA_NLS_USE: KO16KSC5601

Total 3 record download(TEST)

DOWNLOAD : 728.0000 usec

$ cat test.dat
1
2
3

$ iloader formout -s 127.0.0.1 -u sys -p manager -T TEST2 -f t2_add_null.fmt;

$ vi t2_add_null.fmt

table TEST2
{
"I1" integer;
"I2" timestamp ADD NULL;    <= 수정 부분
}
DATEFORM YYYY/MM/DD HH:MI:SS:SSSSSS
DATA_NLS_USE=KO16KSC5601

$ iloader in -s 127.0.0.1 -u sys -p manager  -f t2_add_null.fmt -d test.dat;

DATE FORMAT : YYYY/MM/DD HH:MI:SS
DATA_NLS_USE: KO16KSC5601

UPLOAD : 3.8490 msec

Load Count  : 3(TEST2)

iSQL> SELECT * FROM test2;
I1          I2
---------------------------------
1
2
3
3 rows selected.
ADD YYYYMMDD[HHMISS]#
iSQL> CREATE TABLE test(i1 INTEGER);
Create success.
iSQL> CREATE TABLE test2(i1 INTEGER,
        i2 TIMESTAMP);
Create success.
iSQL> INSERT INTO test VALUES(1);
1 row inserted.
iSQL> INSERT INTO test VALUES(2);
1 row inserted.
iSQL> INSERT INTO test VALUES(3);
1 row inserted.

$ iloader formout -s 127.0.0.1 -u sys -p manager -T TEST -f test.fmt;

$ iloader out -s 127.0.0.1 -u sys -p manager  -f test.fmt -d test.dat;

DATA_NLS_USE: KO16KSC5601

Total 3 record download(TEST)

DOWNLOAD : 728.0000 usec

$ cat test.dat
1
2
3

$ iloader formout -s 127.0.0.1 -u sys -p manager -T TEST2 -f t2_add_val.fmt;

$ vi t2_add_val.fmt

table TEST2
{
I1 integer;
I2 timestamp ADD 20040623;  <= 수정 부분
}
DATEFORM YYYY/MM/DD HH:MI:SS:SSSSSS
DATA_NLS_USE=KO16KSC5601


$ iloader in -s 127.0.0.1 -u sys -p manager  -f t2_add_val.fmt -d test.dat;

DATE FORMAT : YYYY/MM/DD HH:MI:SS
DATA_NLS_USE: KO16KSC5601

UPLOAD : 12.4080 msec

Load Count  : 3(TEST2)

iSQL> SELECT * FROM test2;
I1          I2
---------------------------------
1           40D8497000000000
2           40D8497000000000
3           40D8497000000000
3 rows selected.
SKIP DEFAULT#
iSQL> CREATE TABLE test(i1 INTEGER,
        i2 TIMESTAMP);
Create success.
iSQL> CREATE TABLE test2(i1 INTEGER,
        i2 TIMESTAMP);
Create success.
iSQL> INSERT INTO test VALUES(1, BYTE'40D930BF000A7566');
1 row inserted.
iSQL> INSERT INTO test VALUES(2, BYTE'40D930BF000A7566');
1 row inserted.
iSQL> INSERT INTO test VALUES(3, BYTE'40D930BF000A7566');
1 row inserted.

$ iloader formout -s 127.0.0.1 -u sys -p manager -T TEST -f test.fmt;

$ iloader out -s 127.0.0.1 -u sys -p manager  -f test.fmt -d test.dat;

DATE FORMAT : YYYY/MM/DD HH:MI:SS
DATA_NLS_USE: KO16KSC5601

Total 3 record download(TEST)

DOWNLOAD : 941.0000 usec

$ cat test.dat
1,40D930BF000A7566
2,40D930BF000A7566
3,40D930BF000A7566

$ iloader formout -s 127.0.0.1 -u sys -p manager -T TEST2 -f t2_skip_default.fmt;

$ vi t2_skip_default.fmt
table TEST2
{
"I1" integer;
"I2" timestamp SKIP DEFAULT;    <= 수정 부분
}
DATEFORM YYYY/MM/DD HH:MI:SS:SSSSSS
DATA_NLS_USE=KO16KSC5601

$ iloader in -s 127.0.0.1 -u sys -p manager  -f t2_skip_default.fmt -d test.dat;

DATE FORMAT : YYYY/MM/DD HH:MI:SS
DATA_NLS_USE: KO16KSC5601

UPLOAD : 5.0200 msec

Load Count  : 3(TEST2)

iSQL> SELECT * FROM test2;
I1          I2
---------------------------------
1           4F179CE100035500
2           4F179CE10003554D
3           4F179CE100035577
3 rows selected.
SKIP NULL#
iSQL> CREATE TABLE test(i1 INTEGER,
        i2 TIMESTAMP);
Create success.
iSQL> CREATE TABLE test2 (i1 INTEGER,
        i2 TIMESTAMP);
Create success.
iSQL> INSERT INTO test VALUES(1, BYTE'40D930BF000A7566');
1 row inserted.
iSQL> INSERT INTO test VALUES(2, BYTE'40D930BF000A7566');
1 row inserted.
iSQL> INSERT INTO test VALUES(3, BYTE'40D930BF000A7566');
1 row inserted.

$ iloader formout -s 127.0.0.1 -u sys -p manager -T TEST -f test.fmt;

$ iloader out -s 127.0.0.1 -u sys -p manager  -f test.fmt -d test.dat;

DATE FORMAT : YYYY/MM/DD HH:MI:SS
DATA_NLS_USE: KO16KSC5601

Total 3 record download(TEST)

DOWNLOAD : 769.0000 usec

$ cat test.dat
1,40D930BF000A7566
2,40D930BF000A7566
3,40D930BF000A7566

$ iloader formout -s 127.0.0.1 -u sys -p manager -T TEST2 -f t2_skip_null.fmt;

$ vi t2_skip_null.fmt

table TEST2
{
"I1" integer;
"I2" timestamp SKIP NULL;       <= 수정 부분
}
DATEFORM YYYY/MM/DD HH:MI:SS:SSSSSS
DATA_NLS_USE=KO16KSC5601

$ iloader in -s 127.0.0.1 -u sys -p manager  -f t2_skip_null.fmt -d test.dat;

DATE FORMAT : YYYY/MM/DD HH:MI:SS
DATA_NLS_USE: KO16KSC5601

UPLOAD : 3.7900 msec

Load Count  : 3(TEST2)

iSQL> SELECT * FROM test2;
I1          I2
---------------------------------
1
2
3
3 rows selected.
SKIP YYYYMMDD[HHMISS]#
iSQL> CREATE TABLE test(i1 INTEGER,
        i2 TIMESTAMP);
Create success.
iSQL> CREATE TABLE test2(i1 INTEGER,
        i2 TIMESTAMP);
Create success.
iSQL> INSERT INTO test VALUES(1, BYTE'40D930BF000A7566');
1 row inserted.
iSQL> INSERT INTO test VALUES(2, BYTE'40D930BF000A7566');
1 row inserted.
iSQL> INSERT INTO test VALUES(3, BYTE'40D930BF000A7566');
1 row inserted.

$ iloader formout -s 127.0.0.1 -u sys -p manager -T TEST -f test.fmt;

$ iloader out -s 127.0.0.1 -u sys -p manager  -f test.fmt -d test.dat;

DATE FORMAT : YYYY/MM/DD HH:MI:SS
DATA_NLS_USE: KO16KSC5601

Total 3 record download(TEST)

DOWNLOAD : 726.0000 usec

$ cat test.dat
1,40D930BF000A7566
2,40D930BF000A7566
3,40D930BF000A7566

$ iloader formout -s 127.0.0.1 -u sys -p manager -T TEST2 -f t2_skip_val.fmt;

$ vi t2_skip_val.fmt

table TEST2
{
"I1" integer;
"I2" timestamp SKIP 20040623;   <= 수정 부분
}
DATEFORM YYYY/MM/DD HH:MI:SS:SSSSSS
DATA_NLS_USE=KO16KSC5601

$ iloader in -s 127.0.0.1 -u sys -p manager  -f t2_skip_val.fmt -d test.dat;

DATE FORMAT : YYYY/MM/DD HH:MI:SS
DATA_NLS_USE: KO16KSC5601

UPLOAD : 15.3680 msec

Load Count  : 3(TEST2)

iSQL> SELECT * FROM test2;
I1          I2
---------------------------------
1           40D8497000000000
2           40D8497000000000
3           40D8497000000000
3 rows selected.