Я часто работаю в командной строке mysql. Общая потребность состоит в том, чтобы взять результаты запроса и импортировать их в документ Чисел (подобный документу Excel).
Каков самый быстрый метод для того, чтобы сделать это?
Можно выбрать в outfile непосредственно от MySQL, но это делает несколько шагов.
FIELDS OPTIONALY ENCLOSED BY
и DELIMITED BY
. Я склонен делать этот метод. Для меня это кажется немного быстрее, но это главным образом, потому что я не помню, как создать SELECT INTO OUTFILE
запросите сверху и имейте для поиска его.
Как насчет этого?:
mysql -B -e "$ MY_QUERY"> my_data.csv
Формат вывода фактически разделен табуляцией, а не запятой , но, по крайней мере, Excel и OpenOffice Calc автоматически адаптируется к этому.
Кстати, для удобства и для обеспечения неинтерактивного выполнения команд
mysql я настоятельно рекомендую создать безопасный файл ~ / .my.cnf
(читаемый только вами ) с такими записями:
[client]
user=YOUR_MYSQL_USER_NAME
password=YOUR_MYSQL_PASSWORD
host=YOUR_MYSQL_SERVER
port=YOUR_MYSQL_SERVER_PORT
WHATEVER_OTHER_OPTIONS_YOU_LIKE
Ссылки:
http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.html
--batch, -B
Печатать результаты, используя табуляцию в качестве разделителя столбцов, с каждой строкой на новой строке. С этой опцией mysql не использует файл истории.
Пакетный режим приводит к нестандартному формату вывода и экранированию специальных символов. Экранирование можно отключить, используя необработанный режим; см. описание параметра --raw.
Установите панель инструментов отладки Django . Это дает вам все это и больше.
-121--1189255- Вы также можете использовать утилиту командной строки MySQL
с опцией -E
и терпейте вывод в файл. Это выводят данные в формате разделите вкладки.
Вы можете выполнить запрос SELECT ... INTO OUTFILE
на локальном компьютере и сохранить файл локально. Если у вас локально установлена утилита командной строки mysql *, просто добавьте флаг -h
для подключения к определенному хосту. mysql
также может читать со стандартного ввода, поэтому вы можете настроить файл .sql, который вы будете использовать для импорта.
Файл SQL ( outfile.sql
):
SELECT * FROM myTable WHERE date>CURDATE()
INTO OUTFILE '/home/me/outfile.csv' -- Specify output file (if Windows, make sure
-- to use backslashes and escape them
-- (C:\\Users\\<user>\\...)
FIELDS
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"' -- Results in double quotation marks, which I have found Excel
-- requires (instead of using a backslash to escape)
TERMINATED BY '\\n' -- or your line ending of choice
-- (i believe escaping is required)
Затем введите следующую команду:
mysql -u <user> -p -h <server_ip_address> <outfile.sql
Обратите внимание, что было бы неплохо создать нового пользователя, который может подключаться с вашего пульта дистанционного управления. IP-адрес с разрешениями FILE и только доступом SELECT
к таблицам, которые необходимо запросить.
Сначала нужно немного настроить, но, в конце концов, вы можете просто вставить команду mysql
в пакетный файл и сделать это в два клика.
* Я считаю, что вам нужно загрузить полную систему MySQL, которая поставляется с mysql
CLI.
Возможно, вы ищете механизм рабочего процесса, такой как JBPM или любой другой инструмент с открытым исходным кодом, указанный здесь .
-121--4950351- Вы можете обойти это еще проще с помощью Rebase extension , просто используйте hg pull --rebase
, и ваши фиксаторы автоматически повторно присоединяются к извлеченной редакции, избегая проблемы ветвления.
Ваш вариант 1 является лучшим, я думаю, - сделайте это один раз и напечатайте правильные варианты или даже лучше, создайте небольшой сценарий, который примет запрос и автоматически добавит ваши любимые варианты с вложением и разделителем.
Можно также пропустить шаги 2 и 3, если установить программу клиента mysql для вашей клиентской платформы и подключиться непосредственно к серверу mysql с вашей рабочей станции, если это возможно для вас.
В Excel есть функция Text to Columns
в меню Data
, которая позволяет задать пользовательский делиметр. Я предполагаю, что Numbers будет иметь аналогичную функциональность. Если это так, то решение заключается в копировании и вставке непосредственно в документ Numbers, а затем преобразовании этих текстовых ячеек в столбцы с указанием |
в качестве разделителя.
Используйте свой первый метод со следующей модификацией:
Вместо запуска команды на сервере вы можете запустить ее на своем локальном компьютере и сохранить файл напрямую, без необходимости устанавливать sftp и удалять его. Для этого вам нужно ssh перенаправить порт mysql на свободный порт на вашем локальном компьютере.
ssh -L 3306:localhost:3306 user@remoteserver
Первый «3306» - это порт на локальной машине. "localhost" относится к имени хоста удаленного сервера. Второй «3306» - это порт на удаленной машине, который должен быть переадресован. Если сервер MySQL работает на другом порту, вы должны вместо этого использовать этот порт. После входа в систему вы держите сеанс ssh открытым до тех пор, пока хотите работать.
В новом окне терминала вы можете начать сеанс mysql.
mysql -hlocalhost -uUser -p --port=3306
Этот метод имеет то преимущество, что вам не нужно открывать доступ к серверу MySQL в Интернет, и вы передаете все данные через зашифрованный туннель.