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

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

Как сохранить результат запроса MySQL в локальный файл CSV? У меня нет доступа к удаленной машине.

4b9b3361

Ответ 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 приложения.

Затем вы можете добавить логику для отправки файла через заголовки.

Убедитесь, что пользователь базы данных имеет права на запись в удаленную файловую систему.