Как сохранить результат запроса MySQL в локальный файл CSV? У меня нет доступа к удаленной машине.
Как сохранить результат запроса MySQL в локальный файл CSV?
Ответ 1
Вы можете попробовать:
SELECT a,b,c
FROM table_name
INTO OUTFILE '/tmp/file.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
Мы используем предложение OUTFILE здесь для хранения вывода в файл CSV.
Мы включаем поля в двойные кавычки в обрабатывать значения полей, в которых есть запятая, и мы разделяем поля по запятой и отдельной отдельной строке с использованием новой строки.
Ответ 2
Вам нужно будет использовать флаг командной строки "-e".
$> /usr/local/mysql/bin/mysql -u user -p -h remote.example.com -e "select t1.a,t1.b from db_schema.table1 t1 limit 10;" > hello.txt
Создает локальный файл hello.txt в вашем текущем рабочем каталоге с выходом из запроса.
Ответ 3
Я столкнулся с этой проблемой, и я читал некоторое время для решения: импорт в excel, импорт в доступ, сохранение в виде текстового файла...
Я думаю, что лучшим решением для Windows является следующее:
- используйте команду insert... select, чтобы создать таблицу результатов. Идеальный сценарий, который должен автоматически создавать поля этой таблицы результатов, но это невозможно в mysql
- создать соединение ODBC с базой данных
- использовать доступ или excel для извлечения данных, а затем сохранить или обработать так, как вы хотите.
Для Unix/Linux я считаю, что лучшим решением может быть использование этой опции -e tmarthal, упомянутой ранее, и обработкой вывода через процессор, например awk, для получения правильного формата (CSV, xml, что угодно).
Ответ 4
Используйте функцию concat для mysql
mysql -u <username> -p -h <hostname> -e "select concat(userid,',',surname,',',firstname,',',midname) as user from dbname.tablename;" > user.csv
Вы можете удалить первую строку, которая содержит имя столбца "пользователь".
Ответ 5
Мы можем использовать флаг выполнения -e командной строки и простой скрипт на python для генерации результата в формате csv.
создайте файл Python (пусть name = tab2csv) и напишите в нем следующий код.
#!/usr/bin/env python import csv import sys tab_in = csv.reader(sys.stdin, dialect=csv.excel_tab) comma_out = csv.writer(sys.stdout, dialect=csv.excel) for row in tab_in: comma_out.writerow(row)
Выполните следующую команду, обновив учетные данные mysql правильно
mysql -u orch -p -h database_ip -e "select * from database_name.table_name limit 10;" | python tab2csv > outfile.csv
Результат будет сохранен в outfile.csv.
Ответ 6
Запустите запрос MySQl для создания CSV из вашего приложения, как показано ниже
SELECT order_id,product_name,qty FROM orders INTO OUTFILE '/tmp/orders.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'
Он создаст файл csv в папке tmp приложения.
Затем вы можете добавить логику для отправки файла через заголовки.
Убедитесь, что пользователь базы данных имеет права на запись в удаленную файловую систему.