【MySQL】CSVファイルをデータベースにインポートする

シェアする

今回はCSVファイルをMySQLデータベースにインポートする方法を紹介します。

CSVファイルの内容をMySQLデータベースにインポートするには、LOAD DATA INFILE構文を使います。

スポンサーリンク

インポート先のテーブルを作成

1.以下のSQLを実行し、データベースを作成する。

CREATE DATABASE testdb DEFAULT CHARACTER SET utf8mb4;

2.以下のSQLを実行し、先程作成したデータベースに接続する。

use testdb;

3.以下のSQLを実行し、テーブルを作成する。

CREATE TABLE goods(
    id int(11) NOT NULL AUTO_INCREMENT,
    name varchar(50) NOT NULL,
    price int(11) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

4.テーブルが問題なく作成されているか確認する。

mysql> show create table goods\G;
*************************** 1. row ***************************
       Table: goods
Create Table: CREATE TABLE `goods` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `price` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

CSVファイルをMySQLデータベースにインポートする

今回は以下のCSVファイルを使います。

【goodstable.csv】

1,"キャベツ",700
2,"大根",580
3,"きゅうり",100
4,"レタス",498
5,"小松菜",250

CSVファイルの内容をMySQLデータベースにインポートするには、LOAD DATA INFILE構文を使います。LOAD DATA INFILE構文を使うと、テキストファイルのデータをインポートすることができるようになります。

以下に使用例を記載します。

LOAD DATA LOCAL INFILE "ファイル名"
INTO TABLE テーブル名 
FIELDS TERMINATED BY '区切り文字'
OPTIONALLY ENCLOSED BY '囲み文字';

FIELDS TERMINATED BY で指定する「区切り文字」は、フィールドの区切り文字です。CSVの場合は「,」(コンマ)になります。

CSVではフィールドの値が「”」(ダブルクォート)で囲まれていることがあるので、OPTIONALLY ENCLOSED BY の「囲み文字」に「”」を指定します。もしインポートするCSVに囲み文字がない場合は、OPTIONALLY ENCLOSED BYは記述しなくても構いません。

以下に実行例を記載します。macOS上で、CSVファイルは「デスクトップ」に置いてあると仮定しています。

load data local infile "/Users/kaji/Desktop/goodstable.csv " into table goods fields terminated by ',' optionally enclosed by '"';

MySQLに接続後実行し、確認した結果、以下のようになります。

mysql> select * from goods;
+--+------------+-------+
| id | name       | price |
+--+------------+-------+
|  1 | キャベツ    |   700 |
|  2 | 大根         |   580 |
|  3 | きゅうり      |   100 |
|  4 | レタス       |   498 |
|  5 | 小松菜      |   250 |
+--+------------+-------+

逆に、MySQLのデータをCSVにエクスポートするには?

MySQLのデータをCSVにエクスポートする記事もありますので、こちらも参考にしてください。

今回はMySQLデータベースからCSVを出力する方法を紹介します。 MySQLからCSVファイルを出力するにはSELECT INTO 構文でOUTFILEを使う必要があります。

参考サイト

昨年大学を卒業したばかりのエンジニアです。CakePHPを勉強中です。拙い部分も多いですがよろしくお願いします。

スポンサーリンク

シェアする

フォローする