MonetDBクライアントで読み込む外部スクリプトはBOM付にしておく
MonetDBに絡むファイル(データCSVやその他諸々)はUTF-8にしておけば問題ないと思っていた。
(実際、ここを始めとしてMonetDB.orgの色々なところに書いてある。)
しかし、罠があった。
それは、BOM無しのUTF-8のスクリプトファイル(.sql)の2バイト文字をうまく認識してくれないのだ。
具体的には
テーブル上の性別(sex_jp)「男」「女」を性別コード(sex)「0」「1」にそれぞれ変換したいとする。
ALTER TABLE tbl ADD COLUMN sex; UPDATE tbl SET sex = CASE WHEN sex_jp = '男' THEN 0 WHEN sex_jp = '女' THEN 1 END;
このとき、上記のsqlを外部スクリプトとして読込む(\< henkan.sql
)場合、追加したカラムsex
は全て null になってしまう。
ちなみに、
UPDATE tbl SET sex = CASE WHEN sex_jp = '男' THEN 0 WHEN sex_jp = '女' THEN 1 ELSE 99 END;
と書けば、ELSE節が適用されて全て 99 になる。