MySQL テーブルデータをcsv形式で出力する
MySQLで、テーブルデータをcsv形式で出力する手順を記述してます。
環境
- OS ubuntu21.10
- MySQL Ver 8.0.27-0ubuntu0.21.10.1 for Linux on x86_64 ((Ubuntu))
手順
テーブルデータをcsv形式で出力するには、以下の構文を使用します。
※出力先は「@@global.secure_file_priv」で値が設定されている場合は、そのパスしか使用できません。
select * from テーブル名 into outfile "出力先/ファイル名" fields terminated by ',';
実際に、パスを確認してから実行してみます。
SELECT @@global.secure_file_priv;
<出力結果>
+---------------------------+
| @@global.secure_file_priv |
+---------------------------+
| /var/lib/mysql-files/ |
+---------------------------+
1 row in set (0.00 sec)
実行します。
select * from tbl1 into outfile "/var/lib/mysql-files/tbl1.csv" fields terminated by ',';
実行すると、csvファイルが作成されていることが確認できます。
sudo cat /var/lib/mysql-files/tbl1.csv
<出力結果>
1,taro,10
2,jiro,20
3,saburo,30
ダブルクオートで囲む
ダブルクオートで囲む場合は、「enclosed by」で囲みたい文字列を指定します。
select * from tbl1 into outfile "/var/lib/mysql-files/tbl1_2.csv" fields terminated by ',' enclosed by '"';
ダブルクオートで囲まれていることが確認できます。
sudo cat /var/lib/mysql-files/tbl1_2.csv
<出力結果>
"1","taro","10"
"2","jiro","20"
"3","saburo","30"
ファイルの作成場所
ファイルの作成場所を、指定したくなければ「–secure-file-priv」を空にします。
空にするには、設定ファイルを変更するので、バックアップを取ります。
sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf{,.`date +%y%m%d%H%M%S`}
「mysqld.cnf」に以下を追加します。
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
<追加>
secure-file-priv = ""
再起動します。
sudo service mysql restart
再度、接続して「@@global.secure_file_priv」を確認すると空になっていることが確認できるので、これで、どこでもファイルが作成できます。
mysql> SELECT @@global.secure_file_priv;
+---------------------------+
| @@global.secure_file_priv |
+---------------------------+
| |
+---------------------------+
1 row in set (0.00 sec)
-
前の記事
javascript lodashを使ってオブジェクトからプロパティを取り除く 2021.12.17
-
次の記事
MySQL 小数点以下を切り下げる 2021.12.17
コメントを書く