Все решения, представленные на сегодняшний день, за исключением одного из MySQL, являются неверными и, возможно, небезопасными (то есть проблемами безопасности) по крайней мере для некоторого возможного содержимого в базе данных mysql.
MYSQL Workbench (и аналогично PHPMyAdmin) предоставляют формально правильное решение, но предназначены для загрузки вывода в местоположение пользователя. Они не так полезны для таких вещей, как автоматизация экспорта данных.
Невозможно сгенерировать надежно правильный CSV из вывода mysql -B -e 'SELECT ...'
, потому что это не может кодировать возврат каретки и пробел в полях. Флаг -s для mysql действительно экранирует обратную косую черту и может привести к правильному решению. Тем не менее, использование языка сценариев (язык с достойной внутренней структурой данных, а не bash) и библиотек, где проблемы кодирования уже были тщательно проработаны, гораздо безопаснее.
Я подумал о написании сценария для этого, но как только я подумал о том, что я бы назвал, мне пришло в голову поискать ранее существующую работу с тем же именем. Хотя я не прошел через это полностью, решение на https://github.com/robmiller/mysql2csv выглядит многообещающим. В зависимости от вашего приложения, подход yaml к указанию команд SQL может или не может понравиться. Я также не в восторге от требования более свежей версии ruby, чем стандартная комплектация для моего ноутбука Ubuntu 12.04 или серверов Debian Squeeze. Да, я знаю, что мог бы использовать RVM, но я бы предпочел не поддерживать это для такой простой цели.
Надеюсь, кто-нибудь укажет подходящий инструмент, который прошел небольшое тестирование. В противном случае я, вероятно, обновлю это, когда найду или напишу.