LoginSignup
19
13

More than 5 years have passed since last update.

MySQLでファイルのデータをテーブルに挿入する

Last updated at Posted at 2016-02-27

MySQLでのファイルからのデータ挿入方法について。
バージョン5.7.11でmysqlクライアントを使用して確認しています。

LOAD DATA INFILE

LOAD DATA INFILE を使用してファイルをテーブルに登録することができます。

構文

サーバ上のファイルを使用する場合

LOAD DATA INFILE 'ファイル名' INTO TABLE テーブル名

ローカルファイルを使用する場合

LOAD DATA LOCAL INFILE 'ファイル名' INTO TABLE テーブル名

mysql> system sudo cat /var/lib/mysql-files/test.tsv;
1   isono
2   fuguta

mysql> SELECT * FROM test;
Empty set (0.00 sec)

mysql> LOAD DATA INFILE '/var/lib/mysql-files/test.tsv' INTO TABLE test;
Query OK, 2 rows affected (0.00 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 0

mysql> SELECT * FROM test;
+------+--------+
| id   | name   |
+------+--------+
|    1 | isono  |
|    2 | fuguta |
+------+--------+
2 rows in set (0.00 sec)

secure_file_priv

LOCALオプションを使用せずにサーバ上のファイルを使用する場合で、サーバオプションのsecure_file_privが設定されている場合には、設定されたディレクトリ以外からの入力はエラーになります。

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

mysql> LOAD DATA INFILE '/tmp/test.tsv' INTO TABLE test;
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

FIELDSオプションとLINESオプション

先の例では区切り文字はタブで認識されています。
FIELDSオプションを使用すれば区切り文字を、LINESオプションを使用すれば改行コードを修正できます。

mysql> system sudo cat /var/lib/mysql-files/test.csv;
1,"磯野"
2,"フグ田"

mysql> SELECT * FROM test;
Empty set (0.00 sec)

mysql> LOAD DATA INFILE '/var/lib/mysql-files/test.csv' INTO TABLE test
    -> FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"'
    -> LINES TERMINATED BY '\r\n';
Query OK, 2 rows affected (0.01 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 0

mysql> SELECT * FROM test;
+------+-----------+
| id   | name      |
+------+-----------+
|    1 | 磯野      |
|    2 | フグ田    |
+------+-----------+
2 rows in set (0.00 sec)
19
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
13