SQL Server にデータをインポートする方法としては、大きく以下の2種類がある模様。
ただし、両方とものアプローチに共通して言えるのは、UTF-8 (Codepage 65001) はサポートしていないという点。これは、SQL Server そのものが UTF-8 をサポートしておらず、Unicode としては UCS-2 をサポートしているためであると思われる。
では、どのようにして UTF-8 形式の TSV (Tab Separated File = タブ区切りファイル) をインポートするのがいいのか、というのを考えてみたところ、結局は UTF-8 ==> UCS-2 変換を行い BULK INSERT もしくは bcp にて wide 指定してインポートするという流れになる模様。
ちなみに、当初、よくわからずに Codepage 932 (sjis) に変換しようとしていましたが、sjis 範囲外の文字が UTF-8 の段階で含まれていたため、実現できませんでした。
他にも良い方法がありましたら、コメントよろしくお願いします。
ただし、両方とものアプローチに共通して言えるのは、UTF-8 (Codepage 65001) はサポートしていないという点。これは、SQL Server そのものが UTF-8 をサポートしておらず、Unicode としては UCS-2 をサポートしているためであると思われる。
では、どのようにして UTF-8 形式の TSV (Tab Separated File = タブ区切りファイル) をインポートするのがいいのか、というのを考えてみたところ、結局は UTF-8 ==> UCS-2 変換を行い BULK INSERT もしくは bcp にて wide 指定してインポートするという流れになる模様。
- テキストエディタやツールなどを用いて UTF-8 形式の TSV ファイルを UCS-2 に変換
- bcp ユティリティーを使用してインポート
bcp "database_name.dbo.table_name" in Unicode.tsv -w -T -S sqlserver_host
ちなみに、当初、よくわからずに Codepage 932 (sjis) に変換しようとしていましたが、sjis 範囲外の文字が UTF-8 の段階で含まれていたため、実現できませんでした。
他にも良い方法がありましたら、コメントよろしくお願いします。