トップへ(mam-mam.net/)

MariaDB(MySQL)でCSVファイルをテーブルにインポート、テーブルをCSVファイルへエクスポートする方法

MariaDB(MySQL)でCSVファイルをテーブルにインポート、テーブルをCSVファイルへエクスポートする方法

MariaDB(MySQL)でCSVファイルをテーブルへ取り込む(インポート)には、
LOAD DATA INFILE 'CSVファイル名'
を使います。

テーブルをCSVファイルに保存(エクスポート)するには、
INTO OUTFILE 'CSVファイル名'
を使います。
以下具体的なSQLで解説します。

CSVファイルのテーブル取り込み(インポート)

例えば取り込み先テーブル構造が以下とします。
CREATE TABLE IF NOT EXISTS t_csv(id INT, name VARCHAR(255), age INT);

t_csv
カラム名
idINT
nameVARCHAR(255)
ageINT

「insert.csv」ファイルが以下とします。

"id","name","age"
1,"イシダ",24
2,"カワサキ",31
3,"ソノダ",41

LOAD DATA INFILE」を使うと「insert.csv」ファイルを「t_csv」テーブルに取り込むことが出来ます。
MariaDB(MySQL)サーバーがローカルファイルの読み込みを許可していない場合は
SET GLOBAL local_infile=on;
で一時的に許可設定にすることが出来ます。

SET GLOBAL local_infile=on;
LOAD DATA INFILE '/ディレクトリ/insert.csv'
  INTO TABLE t_csv
  FIELDS TERMINATED BY ','
  ENCLOSED BY '"'
  LINES TERMINATED BY '\r\n'
  IGNORE 1 ROWS;

オプションの説明

FIELDS TERMINATED BY ',' フィールドの区切り文字を指定します
FIELDS ENCLOSED BY '"' クォートを指定します
LINES TERMINATED BY '\r\n' 行の終端記号(改行)を指定します
IGNORE 1 ROWS 最初から1行目を無視(ヘッダー行)
FIELD ESCAPED BY 'エスケープ文字' エスケープ文字の指定
デフォルトは バックスラッシュ(半角エン記号「\」)
MariaDB [db_test]> select * from t_csv;
+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    1 | イシダ       |   24 |
|    2 | カワサキ     |   31 |
|    3 | ソノダ       |   41 |
+------+--------------+------+

テーブルのCSVファイルへの書き出し(エクスポート)

テーブルをCSVファイルに保存するには INTO OUTFILE を使います。
カラム名は出力できません。

SELECT * FROM t_csv
  INTO OUTFILE '/ディレクトリ/output.csv'
  FIELDS TERMINATED BY ',' 
  ENCLOSED BY '"' 
  LINES TERMINATED BY '\r\n';

カラム名も出力したい場合はUNIONを使うしかないでしょう。

SELECT 'id','name','age'
UNION
SELECT * FROM t_csv
  INTO OUTFILE '/ディレクトリ/output.csv'
  FIELDS TERMINATED BY ',' 
  ENCLOSED BY '"' 
  LINES TERMINATED BY '\r\n';

output.csv

"id","name","age"
"1","イシダ","24"
"2","カワサキ","31"
"3","ソノダ","41"