[[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`を指定する必要がある。値省略は空文字と判定されてしまうので、意図せぬ挙動になったりエラーになる。