Azure SQL DatabaseにBULK INSERTしたら日本語が文字化けした

こんばんは。今回はAzure SQL Databaseでちょっとつまづいたことがあったので対処法をメモっておきます。

問題

Azure SQL Databaseに、CSVファイルをBULK INSERTしたところ日本語が文字化けした。

原因と解決方法

ネットを探してよくみかけたものは、Azure SQL Databaseの照合順序に起因するというもの。Azure SQL Databaseでは照合順序があとから変更できないので、照合順序を変えたいなら列毎に指定するしかない模様。

理由の解説はリンク先のブログに譲ります・・

ところが今回はこれでは解決しませんでした。

また、こんな記事もみつけました。なるほど、varcharでなくnvarcharを使うとそもそも文字化けしなくなると。

ただ、nvarcharに変更してみたけど、それでも文字化けする・・・なぜだ・・・

こちらのブログが解決につながりました。

UTF-8 形式のテキストファイルを BULK INSERT で一括取り込みする( SQL Server )

BULK INSERTでutf-8を読み込むためには追加の引数の指定が必要っぽい。

BULK INSERT T_Table
         FROM 'xxxx.txt'
         WITH (
                 DATAFILETYPE='char'
         ,       CODEPAGE = '65001'
         ,       FIELDTERMINATOR = ','
         );
GO

確かにこれでうまくいった。以下にも似たような質問があって、CODEPAGEは932でもいけるっぽい。

https://ja.stackoverflow.com/questions/22324/sql-server%E3%81%A7csv%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8Ainsert%E3%81%99%E3%82%8B%E3%81%A8%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%8C-%E3%81%A7%E6%A0%BC%E7%B4%8D%E3%81%95%E3%82%8C%E3%82%8B

とりあえず解決できてよかった。

おしまい

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。