【Ubuntu14.04】MySQL5.7 で csv から import する

MySQL5.7.11 で csv から import したい時の私的メモです。OS は Ubuntu 14.04.3 です。

MySQL 5.7 で csv から import

デフォルトの設定では, 特定の場所以外の csv を指定して import しようすると下記のように権限関連のエラーとなった。5.6では上手くいっていた気がする…

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

MySQL5.7.11 (Ubuntu14.04) ではデフォルトの場所は下記だった。

mysql> SELECT @@global.secure_file_priv;
+---------------------------+
| @@global.secure_file_priv |
+---------------------------+
| /var/lib/mysql-files/     |
+---------------------------+
1 row in set (0.01 sec)

場所に拘りはなかったので, csv を /var/lib/mysql-files/ に移動した。

$ sudo mv sample.csv /var/lib/mysql-files/

再度 import すると成功した。

mysql> LOAD DATA INFILE "/var/lib/mysql-files/sample.csv"
INTO TABLE sample
CHARACTER SET 'utf8'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(@ignore, @2, @3)
SET id=@2, name=@3;

Ubuntu14.04 で MySQL5.7

順番が前後するけど Ubuntu14.04 で MySQL5.7 環境を作る時のメモ。

$ wget https://dev.mysql.com/get/mysql-apt-config_0.6.0-1_all.deb
$ sudo dpkg -i mysql-apt-config_0.6.0-1_all.deb
$ sudo apt-get update
$ sudo apt-get install mysql-server

バージョンと状態を確認。

$ mysql --version
mysql  Ver 14.14 Distrib 5.7.11, for Linux (x86_64) using  EditLine wrapper
$ sudo service mysql status
 * MySQL Community Server 5.7.11 is running

設定ファイルの場所を確認。

$ mysql --help | grep my.cnf
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
$ less /etc/mysql/my.cnf

一般クエリログとスロークエリログを設定しておく。

$ vim /etc/mysql/my.cnf
...
general_log    	= 1
general_log_file= /var/log/mysql/query.log
slow_query_log  = 1
long_query_time = 1
log_queries_not_using_indexes = 1
slow_query_log_file = /var/log/mysql/slow_query.log

$ sudo service mysql restart
 * Stopping MySQL Community Server 5.7.11
 * MySQL Community Server 5.7.11 is stopped
 * Re-starting MySQL Community Server 5.7.11
 * MySQL Community Server 5.7.11 is started

$ sudo service mysql status
  * MySQL Community Server 5.7.11 is running

Pyhton の MySQLドライバ

Pyhton の MySQLドライバ は複数あって比較している人も多い。自分は mysql-connector-python を選択した。

$ wget https://dev.mysql.com/get/Downloads/Connector-Python/mysql-connector-python_2.1.3-1ubuntu14.04_all.deb
$ sudo dpkg -i mysql-connector-python_2.1.3-1ubuntu14.04_all.deb

簡単なクエリを投げてみたけど今のところは不便な感じはない。

[1] 第7回 スロークエリーログを使って遅いクエリを収集する