MySQLのselect結果をコマンドライン上でカンマ区切りとかに
mysqlのselectの結果を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
とか