【MySQL】CSVファイルのデータをインポートする方法


ここではMySQLで、CSVファイルのデータをインポートする方法を紹介しています。

CSVファイルのデータをインポートする方法

CSVファイルのデータをインポートするには、LOAD DATA INFILEコマンドを使います。

LOAD DATA INFILEコマンドの基本的な使い方は次の通りです。

LOAD DATA INFILE 'ファイルパス'
INTO TABLE テーブル名 FIELDS TERMINATED BY '区切り文字'
ENCLOSED BY '囲み文字'
LINES TERMINATED BY '改行文字コード';

・FIELDS TERMINATED BY
 区切り文字を指定します。
・ENCLOSED BY
 囲み文字を指定します。
・LINES TERMINATED BY
 改行文字コードを指定します。

CSVファイルをインポートしたサンプル

LOAD DATA INFILEコマンドを使って実際ににテーブルにデータをインポートしてみました。

今回は次のような空のテーブルを用意しました。

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

mysql> DESC tab1;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| emp_id   | varchar(10)  | YES  |     | NULL    |       |
| emp_name | varchar(100) | YES  |     | NULL    |       |
| dept     | varchar(10)  | YES  |     | NULL    |       |
| age2     | int(11)      | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

登録するデータは事前に「tab1.csv」として、CSVファイルとして準備しておきました。

・tab1.csvの中身

"00001","Suzuki","HR","28"
"00002","Tanaka","SALES","25"
"00003","Kizaki","SALES","35"
"00004","Tanaka","DEV","45"
"00005","Kizaki","DEV","55"
"00006","Nakata","DEV","35"

LOAD DATA INFILEコマンドを実行すると登録に成功しました。

SELECT文で登録結果を確認することもできました。

mysql> LOAD DATA INFILE '/wk3/tab1.csv' INTO TABLE tab1 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
Query OK, 6 rows affected (0.01 sec)
Records: 6  Deleted: 0  Skipped: 0  Warnings: 0

mysql> SELECT * FROM tab1;
+--------+----------+-------+------+
| emp_id | emp_name | dept  | age2 |
+--------+----------+-------+------+
| 00001  | Suzuki   | HR    |   28 |
| 00002  | Tanaka   | SALES |   25 |
| 00003  | Kizaki   | SALES |   35 |
| 00004  | Tanaka   | DEV   |   45 |
| 00005  | Kizaki   | DEV   |   55 |
| 00006  | Nakata   | DEV   |   35 |
+--------+----------+-------+------+
6 rows in set (0.00 sec)