У меня есть следующий bash-скрипт:
#!/bin/sh
MYSQLHOST="mysql.remote-host.com"
MYSQLDB="mysqldb"
MYSQLTABLE="table"
MYSQLUSER="user"
MYSQLPASS="pass"
MYSQLDUMP="Report/report.csv"
LOG="Report/report.log"
MYSQLOPTS="--user=${MYSQLUSER} --password=${MYSQLPASS} --host=${MYSQLHOST} ${MYSQLDB}"
echo "Report Begin: $(date)"
echo "MySQL Dump Begin: $(date)" >> ${LOG}
echo "SELECT ${MYSQLTABLE}.created_at, ${MYSQLTABLE}.product_options FROM ${MYSQLTABLE} WHERE ${MYSQLTABLE}.product_id=1 ORDER BY ${MYSQLTABLE}.created_at" | mysql ${MYSQLOPTS} > ${MYSQLDUMP}
echo "MySQL Dump End: $(date)" >> ${LOG}
echo "Report Successful: $(date)"
Это выводит мой запрос MySQL в файл report.csv, разделенный "TAB". Однако мне нужно, чтобы он выводился в файл, разделенный "COMMA". Я понимаю, что мог бы создать еще один скрипт для преобразования этого файла из TAB в разделяемый запятой, однако я бы предпочел сохранить этот шаг, если смогу. Итак, как я могу заставить MySQL выгружать файл в формате, разделенном запятыми?
РЕДАКТИРОВАТЬ: я нашел это решение: Как вывести результаты запроса MySQL в формате csv (на экран, а не в файл)?
Однако я не могу заставить его работать:
echo "SELECT CONCAT_WS(',', ${MYSQLTABLE}.created_at, ${MYSQLTABLE}.product_options) FROM ${MYSQLTABLE} WHERE ${MYSQLTABLE}.product_id=1 ORDER BY ${MYSQLTABLE}.created_at" | mysql ${MYSQLOPTS} > ${MYSQLDUMP}
Не работает :(