SQLCMD: BULK IMPORT で日本語CSVをロードする

 
Ubuntu で SQLCMD 使って SQL Server 2019 の NVARCHAR カラムに日本語 CSV ファイル (UTF-8) を何も考えずに BULK IMPORT したら文字化けしたのでメモ。

CSV を UTF-16LE に変換してアップロードすればOK.

nkf で変換してからロード。

$ nkf -w16L /tmp/hoge.csv > /tmp/hoge16.csv
$ sqlcmd -S dbserver -U username -P "PASSWORD" \
-Q "bulk insert [mydata].[myschema].[mytable] \
from '/tmp/hoge16.csv' \
with ( fieldterminator=',', datafiletype='widechar'); "

 
CODEPAGE オプション使う方法もあるらしいが Linux 版 SQL Server だとサポートされてなかったのでこの方法になった。