SQL*LoaderでUnicodeのテキストファイルを取り込む
INFILEがUnicode(UTF-16やUTF-8)なら
CHARACTERSET
を使う。
loaderのcontrolファイルにCHARACTERSET
で文字コードを指定すればOK
OPTIONS(LOAD=100,SKIP=1,ERRORS=-1,ROWS=10) LOAD DATA INFILE 'data.tsv' BADFILE 'data.bad' TRUNCATE INTO TABLE SUMTMP FIELDS TERMINATED BY "," TRAILING NULLCOLS ( ITEM, QTY )
↓こんな感じで
OPTIONS(LOAD=100,SKIP=1,ERRORS=-1,ROWS=10)
LOAD DATA
CHARACTERSET UTF16
INFILE 'data.tsv'
BADFILE 'data.bad'
TRUNCATE
INTO TABLE SUMTMP
FIELDS TERMINATED BY ","
TRAILING NULLCOLS
(
ITEM,
QTY
)
なおloaderでのUnicodeキャラクタ・セットはUTF-16はUTF16
、UTF-8はUTF8
とハイフンなしで指定するとか、少しややこしいかも。
Unicodeのタブ区切りファイル(TSV)
UnicodeのTSVで見事にハマりました。
SJISとかのタブ区切り文字指定は、TERMINATED BY X'09'
と書けばOK
が・・・
Unicodeで同じようにやってみるとエラーになる。
Unicodeでのタブのコードは先頭にゼロが2つ必要になるので、X'09'
ではなくてTERMINATED BY X'0009'
と書くとうまくいく。