개요
도스 형식의 데이터 파일을 Unix/Linux 서버에서 iloader로 업로드하기 위해서는 에디트 프로그램 또는 dos2unix 를 이용하여 파일을 변환해야 합니다.
변환없이 iloader 를 수행할 경우 아래와 같은 에러가 발생할 수 있습니다.
ERR-9102B : Token value length overflow. |
도스 형식의 파일은 Row Termination Code 가 CR(Carriage Return) + LF(Line Feed) 로 구성되어 있습니다.
iloader는 데이터 파일을 파싱할 때 %n(LF) 을 줄바꿈(Row terminator) 으로 인식합니다. 그래서 도스 형식의 데이터 파일을 업로드 할 때 파싱 에러가 발생할 수 있습니다.
도스 형식의 파일을 Linux/Unix 에서 vi 로 파일을 열어보면 라인 끌에 ^M 가 붙어있거나 아래와 같이 보입니다.
"SYS_T.dat" [도스] 225L, 33822C
제거 방법
윈도우즈에서
- 윈도우즈에서는 에디트 프로그램을 이용하여 변환할 수 있습니다.
- 예) UltraEdit 에서 파일 -> 변환 -> 'DOS->UNIX' 선택 후 저장
Linux/Unix에서
dos2unix 를 이용하여 unix 형 파일로 변환
dos2unix 명령은 DOS/MAC 파일을 UNIX 형식으로 변환해줍니다.
수행 예$ dos2unix SYS_T.dat
dos2unix: converting
file
SYS_T.dat to UNIX
format
...
dos2unix 수행 전,후 파일 타입 비교$
file
SYS_T.dat
SYS_T.dat: ISO-8859 text, with very long lines, with CRLF line terminators
# 도스 형식 파일
$ dos2unix SYS_T.dat
dos2unix: converting
file
SYS_T.dat to UNIX
format
...
$
file
SYS_T.dat
SYS_T.dat: ISO-8859 text, with very long lines
# UNIX 형식 파일
sed 를이용하여 ^M 제거
- sed 를 이용하여 ^M 제거 한 파일을 iloader 데이터 파일로 사용합니다.
^M 은 Ctrl+v+m 으로 입력해야 합니다.
수행 예$
sed
's/^M//g'
SYS_T.dat > SYS_T.dat.1
ALTIBASE HDB 5.5.1 부터는 ...
ALTIBASE HDB 5.5.1 부터는 레코드 구분자로 CR+LF를 의미하는 %r%n 을 사용하면 파일 변환/수정 없이 업로드 할 수 있습니다.
수행 예$
file
SYS_T.txt
SYS_T.txt: ISO-8859 text, with CRLF, LF line terminators
$ iloader -s 127.0.0.1 -u sys -p manager
in
-f SYS_T.
fmt
-d SYS_T.txt -log SYS_T.log -bad SYS_T.bad -t
"|"
-r
"%r%n"
-----------------------------------------------------------------
Altibase Data Load
/Download
utility.
Release Version 5.5.1.4.10
Copyright 2000, ALTIBASE Corporation or its subsidiaries.
All Rights Reserved.
-----------------------------------------------------------------
ISQL_CONNECTION : TCP
DATA_NLS_USE: MS949
UPLOAD : 13.5710 msec
Load Count : 2(T)