Подтвердить что ты не робот

Как вы выводите результаты запросов MySQL в формате csv (на экран, а не в файл)?

Я пытаюсь вывести результаты запроса в формате с разделителями-запятыми, используя инструмент командной строки mysql. Мой пользователь mysql не имеет доступа к использованию опции "INTO OUTFILE", указанной в этом вопросе:

Как выводить результаты запросов MySQL в формате CSV?

Я также знаю параметры -H и -X для форматирования вывода в html и xml соответственно, но нет ли способа вывода формата csv непосредственно на экран?

Я нашел этот метод, используя sed - http://tlug.dnho.net/?q=node/209. Но мне любопытно найти прямое решение mysql.

Любые идеи?

4b9b3361

Ответ 1

В итоге я просто сделал вывод с разделителями табуляции и скопировал его в электронную таблицу, а затем экспортировал ее в csv. Также понял, что я мог бы использовать функцию concat или concat_ws для выполнения задания и в следующий раз сделать это.

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat-ws

SELECT CONCAT_WS (',', field1, field2, field3) FROM table;

Ответ 2

mysql --raw --skip-column-names -u someuser -psomepass -h somehost -b somedatabase -e "select * from somedatabase.sometable;"| awk -F\\t '{print $1","$2","$3}'

-F\\t tells awk to use a tab as the delimeter on its input, and we print out the desired columns with commas as delimeters using the "," bit.  Replace "," with ":" or "|" or whatever to suit your needs.

Если вам нужно указать поле вывода, скажем, $1, ваш шрифт будет выглядеть следующим образом:

awk -F\\t '{print "\""$1"\","$2","$3}'

Ответ 3

Я много лет использую MySQL, и я не знаю, как использовать только клиент командной строки mysql для создания CSV-вывода, за исключением тех решений, которые вы уже нашли.

В файле с поддержкой CSV имеется несколько запросов функций:

Единственное другое решение, которое я бы предложил, - написать script в Perl или PHP, чтобы получить данные из MySQL и вывести их в формате CSV или в любом другом формате, который вы хотите. Это не сложно написать script.

Ответ 4

Если у вас установлен MySQL Workbench, вы можете запустить запрос и нажать "экспорт" над результатами. Это даст вам возможность сохранять как .CSV.

Ответ 5

Если у вас есть доступ к mysqldump, вы можете использовать что-то вроде этого

mysqldump -u [username] -p -t -T/path/to/directory [database] --fields-enclosed-by=\; --fields-terminated-by=,

Ответ 6

CLI может выводиться в формате с разделителями табуляции, что почти достаточно хорошо (я говорю по опыту). Используйте опцию -B. Самая большая проблема с разделителем табуляции заключается в том, что я не мог заставить Excel импортировать этот формат. Однако OpenOffice делает.

Ответ 8

Выполните ответ на tr, например:

mysql <blah blah> -B | tr '\t' ','

Ответ 9

Если вы используете mysql в интерактивном режиме, вы можете настроить пейджер на использование sed следующим образом:

$ mysql -u <user> p<passwpd>
mysql> pager sed 's/,/\n/g'
PAGER set to 'sed 's/,/\n/g''
mysql> SELECT blah FROM blah WHERE blah = blah

.
.
.
"blah":"blah"
"blah":"blah"
"blah":"blah"

Если вы не используете в качестве пейджера, то вывод выглядит следующим образом:

"blah":"blah","blah":"blah","blah":"blah"