MariaDB クエリの結果をcsvに出力する

MariaDB クエリの結果をcsvに出力する

MariaDBで、クエリの結果をcsvに出力する手順を記述してます。通常のクエリに「into outfile」で出力先とファイル名を指定して区切り文字を「,」に指定するだけで可能です。

環境

  • OS CentOS Stream release 9
  • MariaDB 10.10.2
  • phpMyAdmin 5.2.0

手順

クエリの結果をcsvに出力するには、以下の構文を使用します。
※出力先は「@@global.secure_file_priv」に値が設定されている場合は、そのパスの配下にしか作成できません。

select * from テーブル名 into outfile "出力先/ファイル名" fields terminated by ',';

実際に、「@@global.secure_file_priv」を確認してから実行してみます。

SELECT @@global.secure_file_priv;

<出力結果>
+---------------------------+
| @@global.secure_file_priv |
+---------------------------+
| NULL                      |
+---------------------------+
1 row in set (0.000 sec)

ここでは「NULL」になっているので、基本どこでも作成可能です。以下のテーブルデータから作成してみます。

実行します。

select * from tbl1 into outfile "/tmp/tbl1.csv" fields terminated by ',';

実行すると、csvファイルが作成されていることが確認できます。

$ cat /tmp/tbl1.csv

<出力結果>
1,taro,10
2,jiro,20
3,saburo,30

ダブルクオートで囲む

ダブルクオートで囲む場合は、「enclosed by」で囲みたい文字列を指定します。

select * from tbl1 into outfile "/tmp/tbl1_2.csv" fields terminated by ',' enclosed by '"';

ダブルクオートで囲まれていることが確認できます。

$ cat /tmp/tbl1_2.csv

<出力結果>
"1","taro","10"
"2","jiro","20"
"3","saburo","30"