0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MySQL8.0でcsvファイルをインポートする

Last updated at Posted at 2020-11-09

環境

MySQL 8.0.21

インポート失敗

MySQL8.0にcsvファイルをインポートしようとすると失敗する。

mysql> load data local infile "[ファイル名]" into table [テーブル名] fields terminated by ',';
ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides

理由は、

  1. セキュリティ強化のため、8.0から LOAD DATA INFILE LOCAL はデフォルトで無効にされた。
  2. MySQL 8.0 で LOAD DATA INFILE LOCAL を利用するには、サーバとクライアント両方で local-infile パラメータを ON にする必要がある。

インポートする

まず、サーバー側のlocal-infileをONにする。

mysql> select @@local_infile; // 設定を確認する
+----------------+
| @@local_infile |
+----------------+
|              0 |
+----------------+
1 row in set (0.01 sec)

mysql> set global local_infile=on; // パラメータを ON にする
Query OK, 0 rows affected (0.01 sec)

mysql> select @@local_infile; // 変更されたことを確認する
+----------------+
| @@local_infile |
+----------------+
|              1 |
+----------------+
1 row in set (0.00 sec)

次は、クライアント側のlocal-infileをONにする。

# mysql -h [ホスト名] --local-infile=1 -p

これらの設定をし、LOAD DATA INFILE LOCALで無事にcsvをインポートできました。

※接続先のホスト名は以下のコマンドで確認できます。

mysql> show variables like 'hostname';
+---------------+--------------+
| Variable_name | Value        |
+---------------+--------------+
| hostname      | [ホスト名]     |
+---------------+--------------+
1 row in set (0.02 sec)

参考

https://mita2db.hateblo.jp/entry/2020/01/13/163218
https://qiita.com/nii_yan/items/0265f69370bbdb883655

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?