|
分類:[データベース全般]
Osバージョン:Windows Server2016
Oracleバージョン:11.2.0.2.0
PL/SQL実行環境:Object Browser Ver10
上記の環境において以下のようにCSVファイルを作成しました。
CSVのファイル形式(sakuraエディタで作成)
文字コードセット:UnicodeBE
CP:なし
BOM:なし
改行コード:変換なし
データは以下のようなものです。
1234,不明,AAAAA,BBBBB,CCCCC,DDDDD
1235,男,AAAAA,BBBBB,CCCCC,DDDDD
1236,女,AAAAA,BBBBB,CCCCC,DDDDD
1237,不明,AAAAA,BBBBB,CCCCC,DDDDD
PL/SQLでUTF16のファイルをUTF8に変換し、
テーブルにINSERTしようとしているのですが、
失敗してしまうので、DBMS_OUTPUTで出力
されたデータを確認したのですが、変数VBUFに
何も入っておらずプログラム内の
EXIT WHEN VBUF IS NULL;
で終了していました。
データを色々変えて試していくと
どうも"不"の文字を読み込もうとすると
NULLになるようで
"不明"から"不"を除いて"明"だけにすると
正常にデータを読み込みます。
このような現象の対策を知っている方が
いらっしゃいましたらご教示のほどよろしくお願いいたします。
補足:Exception(Oracle Error)は発生してません。
-- ******** プログラム抜粋 ********
FHANDLE UTIL_FILE.FILE_TYPE;
VBUF VARCHAR2(8092);
BEGIN
UTL_FILE.FOPEN(該当ファイルのパス,該当ファイル,'R',32767);
UTL_FILE.GET_LINE(FHANDLE,VBUF);
VBUF := CONVERT(VBUF,'UTF8','AL16UTF16');
-- デバッグ用
DBMS_OUTPUT_PUT_LINE('VBUF = '|| VBUF);
EXCEPTION
WHEN NO_DATA_FOUND THEN
EXIT;
END;
EXIT WHEN VBUF IS NULL;
|