IBM mainframe 군 (OS/390,MVS,VM,OS/400)에서 생산된 fixed length data를 UNIX상으로 load시에는 사용하는 code의 차이로 인한 한글문제가 발생 할수 있다.
– EBCDIC(extended binary coded decimal interchange code)과 ASCII(The american standard code for information interchange)간의 double byte character code 체계의 차이로 인한 문제 발생
. EBCDIC은 8 bit 체계의 code로 double byte character의 표현은 SO(hex 0E, shift out), SI(hex 0F, shift in)를 이용하여 표현
. ASCII는 7 bit 체계의 code로 0 bit의 on/off로 표현한다. 0 bit가 on 이 되어 있으면 code page및 code값으로 double byte chracter를 표현 그러므로 ftp를 이용하여 code convertion시에는 SO/SI가 null로 변환되어 data의 길이가 달라진다.
– TCP/IP ftp utility중 한글을 지원하지 않는 경우가 발생(KNET/TCP)
위와 같은 이유로 EBCDIC 체계의 DATA를 ASCII체계의 시스템에 LOAD시에는 다음과 같이 하는 것이 좋다.
방법)
1) IBM MAINFRAME의 RECORD LENGTH를 확인한다.
2) BINARY MODE로 FTP 한다.
3) SQLLOADER를 아래와 같은 방법으로 LOAD한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
sqlldr userid=xxx/xxx control=kr.ctl data=./xxxx.dat direct=true --- kr.ctl unrecoverable load data characterset KO16DBCS infile '/data2/d4/kid01' "FIX 550" append into table krtbl ( col1 position(1:10) char(10)) |