読者です 読者をやめる 読者になる 読者になる

MySQLのselect結果をコマンドライン上でカンマ区切りとかに

mysqlのselectの結果をcsvで出したい場合。
よく、

MySQL CSVファイル出力 - 雑想空間

SELECT * FROM table_name INTO OUTFILE "/tmp/sample.csv" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';

こんな事やってたんですが、結果が数行とかの時は、remote上からscpなんかでfile移動するのが面倒でした。

コマンドライン上でカンマ区切りとかに

mysql -uuser database -p -e 'SELECT id,a_id FROM test limit 10' -B | sed -e 's/\t/,/g'
id,a_id
1,2
3,4
2,16
7,17
5,24
4,25
6,26
8,28
20,29

こんな感じで、コマンドライン上でカンマ区切りで出力。

コマンドライン上からSELECT文投げてます

-B でbatch modeで出すので、tab区切りになります。

sedで、tab -> comma に置換してます。

特定の列の値のカンマ区切りが欲しい時とかは、

mysql -uuser database -p -e 'SELECT id FROM test limit 10' -B | tr '\n' ','
id,25,31,62,63,94,261,291,308,310,339

とか