kzen.dev
  • Питання
  • Мітки
  • Користувачі
Сповіщення
Нагороди
Реєстрація
Після реєстрації ви отримаєте повідомлення про відповіді та коментарі на свої запитання.
Ввійти
Якщо у вас вже є обліковий запис, увійдіть, щоб перевірити нові сповіщення.
За додані запитання, відповіді та коментарі будуть винагороди.
Ще
Джерело
Редагувати
 MCS
MCS
Question

Як вивести результати запиту до 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 2008-12-10T15:59:51+00:00 3
 codeforester
codeforester
Edited question 7-го липня 2018 в 3:26
Comma-separated values - Wikipedia
en.wikipedia.org
Програмування
csv
mysql
quotes
This question has 1 відповідь in English, to read them log in to your account.
Solution / Answer
Paul Tomblin
Paul Tomblin
10-го грудня 2008 в 4:07
2008-12-10T16:07:55+00:00
Ще
Джерело
Редагувати
#8683723

Від http://www.tech-recipes.com/rx/1475/save-mysql-query-results-into-a-text-or-csv-file/

SELECT order_id,product_name,qty
FROM orders
WHERE foo = 'bar'
INTO OUTFILE '/var/lib/mysql-files/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

При використанні цієї команди назви стовпців не будуть експортовані.

Також зверніть увагу, що файл /var/lib/mysql-files/orders.csv буде знаходитися на сервері, на якому запущено MySQL. Користувач, під яким запущено процес MySQL, повинен мати права на запис в обраний каталог, інакше команда не буде виконана.

Якщо ви хочете записати висновок на вашу локальну машину з віддаленого сервера (особливо хостингу або віртуальної машини, такої як Heroku або Amazon RDS), це рішення не підходить.

Patrick M
Patrick M
Edited answer 12-го жовтня 2017 в 7:34
1666
0
 serbaut
serbaut
30-го вересня 2009 в 10:51
2009-09-30T10:51:27+00:00
Ще
Джерело
Редагувати
#8683725

mysql --batch, -B

Вивести результати з використанням табуляції в якості роздільника стовпців; Вивести результати, використовуючи табуляцію як роздільник стовпців, з кожним рядком з нового рядка з нового рядка. При цьому параметрі mysql не використовує файл історії. Пакетний режим призводить до нетабличного формату виводу та екранування спеціальних символів. Екранування можна відключити, використовуючи необроблений режим; див. опис опції --raw.

Це дасть вам файл, розділений табуляцією. Оскільки коми (або рядки, що містять коми) не екрануються, змінити роздільник на кому не так просто.

198
0
 Jonathan
Jonathan
10-го грудня 2008 в 11:34
2008-12-10T23:34:58+00:00
Ще
Джерело
Редагувати
#8683724

В якості альтернативи відповіді вище, ви можете мати таблицю MySQL, яка використовує механізм CSV.

Тоді у вас на жорсткому диску буде файл, який завжди буде у форматі CSV, який ви можете просто скопіювати, не обробляючи його.

11
0
Додати питання
Категорії
Все
Технологія
Культура / Відпочинок
Життя / Мистецтво
Наука
Професіонал
Бізнес
Користувачі
All
New
Popular
1
Роман Азаров
Registered 2 дні тому
2
Mansur Zakirov
Registered 5 днів тому
3
Тагир Мамедов
Registered 1 тиждень тому
4
Алексей Толманов
Registered 1 тиждень тому
5
Valeriu Vodnicear
Registered 2 тижні тому
DE
EL
ES
FI
FR
ID
IT
JA
NL
PL
PT
RU
SK
TR
UK
ZH
© kzen.dev 2023
Джерело
stackoverflow.com
за ліцензією cc by-sa 3.0 з атрибуцією