SQL*LoaderでUnicodeのテキストファイルを取り込む

INFILEがUnicodeUTF-16UTF-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-16UTF16UTF-8UTF8とハイフンなしで指定するとか、少しややこしいかも。

SQL*Loader制御ファイル・リファレンス

Unicodeのタブ区切りファイル(TSV)

UnicodeのTSVで見事にハマりました。

SJISとかのタブ区切り文字指定は、TERMINATED BY X'09'と書けばOK

が・・・

Unicodeで同じようにやってみるとエラーになる。

Unicodeでのタブのコードは先頭にゼロが2つ必要になるので、X'09'ではなくてTERMINATED BY X'0009' と書くとうまくいく。