[[LOAD DATA INFILE構文]]を使う。デフォルトはタブ区切りなので`FIELDS TERMINATED BY`を指定すること。 ## ヘッダなし ```sql LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test FIELDS TERMINATED BY ','; ``` ## ヘッダつき `IGNORE 1 LINES`で1行目を無視する。その代わり、最後の行にカラム名を指定する。 ```sql LOAD DATA INFILE '/var/lib/mysql-files/users.csv' INTO TABLE `users` FIELDS TERMINATED BY ',' IGNORE 1 LINES (id, name); ``` > [!attention] > [[MySQL]]の5.6から8にバージョンアップした際はconfファイルの書き方一部変わっているので注意。ポイントは以下の部分。 > > ```ini > [mysqld] > local-infile=1 > > [mysql] > local-infile=1 > ``` > > 5.6との主な差分は以下。 > > - クライアント側のセクション名は `[client]` ではなく `[mysql]` > - `[mysql]` の `loose-local-infile` は `local-infile` > - `[mysqld]` に `local-infile` を追加する必要がある > [!attention] > `NULL`を入れたいときは`\N`を指定する必要がある。値省略は空文字と判定されてしまうので、意図せぬ挙動になったりエラーになる。