Як вивести результати запиту до MySQL у форматі CSV?
Чи існує простий спосіб запустити запит до MySQL з командного рядка Linux та вивести результати у форматі CSV ?
Ось що я зараз роблю:
mysql -u uid -ppwd -D dbname << EOQ | sed -e 's/ /,/g' | tee list.csv
select id, concat("\"",name,"\"") as name
from students
EOQ
Це стає безладним, коли є багато стовпців, які потрібно оточити лапками, або якщо в результатах є лапки, які потрібно уникнути.
1112
3
Від http://www.tech-recipes.com/rx/1475/save-mysql-query-results-into-a-text-or-csv-file/
При використанні цієї команди назви стовпців не будуть експортовані.
Також зверніть увагу, що файл
/var/lib/mysql-files/orders.csv
буде знаходитися на сервері, на якому запущено MySQL. Користувач, під яким запущено процес MySQL, повинен мати права на запис в обраний каталог, інакше команда не буде виконана.Якщо ви хочете записати висновок на вашу локальну машину з віддаленого сервера (особливо хостингу або віртуальної машини, такої як Heroku або Amazon RDS), це рішення не підходить.
mysql --batch, -B
Це дасть вам файл, розділений табуляцією. Оскільки коми (або рядки, що містять коми) не екрануються, змінити роздільник на кому не так просто.
В якості альтернативи відповіді вище, ви можете мати таблицю MySQL, яка використовує механізм CSV.
Тоді у вас на жорсткому диску буде файл, який завжди буде у форматі CSV, який ви можете просто скопіювати, не обробляючи його.