LOAD DATA LOCAL INFILE 文字コード

MySQL
スポンサーリンク

 

MySQLでcsvファイルからデータをインポートするときなどに使う

LOAD DATA LOCAL INFILE

で、文字コードを指定して行うやり方。

 

やり方

読み取るファイルの文字コードを指定する

読み取るファイルの文字コードを確認する

エディタで確認するとか、

nkwコマンド使うとか。

 

MySQLサーバの文字コード確認する

mysql> show global variables like "character%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb3 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.41 sec)

mysql>

読み込むファイルとMySQLサーバのcharacter_set_databaseが一致してない場合は、character_set_databaseを変更してあげる。

character_set_databaseシステム変数の文字セットを使う。

参考

 

サーバーは、character_set_database システム変数によって示されている文字セットを使用してファイル内の情報を解釈します。

公式

 

 

読み取るcsvファイルの文字コードがUTF-8なら、以下をSQLに記述する。

set character_set_database=utf8

 

utf-8のcsvからutf8mb4のMySQLにインポートしてもよいか?

 

utf8 → 1~3バイトまで対応

utf8mb4 → 1~4バイトまで対応

つーことなんで、utf8mb4がutf8を兼ねてると考えてもよいのか?

 

本来UTF-8は、1~4バイトで文字を表すルールです。

ありがとうございます!

 

 utf8 は現在 utf8mb3 のエイリアスですが、ある時点では utf8 が utf8mb4 への参照になることが予想されます。

MySQL公式

あ、てことはcsvのutf8(1~4バイトのはず)と、MySQLのutf8mb4(1~4バイト)はイコールかもしれんな。

むしろ現時点ではMySQL側を「utf8」にしてしまうと失敗する可能性が出てくるか。

 

 

コメント