Как автоматически генерировать CSV с заданными интервалами из phpMyAdmin

#php #mysql

#php #mysql

Вопрос:

Как я могу это сделать? Можно ли это сделать с помощью заданий cron? Если да, то где я могу прочитать о том, как это сделать?

Мне нужно выгружать данные из моей базы данных в файл CSV каждые столько-то часов. Я хочу, чтобы файл CSV был сохранен в папку на сервере. Возможно ли это вообще с MySQL? Я был бы признателен за любую помощь в этом.

Ответ №1:

Если у вас есть надлежащий доступ к серверу, я предлагаю mysqldump выполнить задание cron.

Прочитайте больше об использовании mysqldump для вывода CSV-файла.

Комментарии:

1. 1, согласен, и mysqldump выполняет дампы лучше, чем mysqladmin, и уже существует действительно хороший скрипт для выполнения хороших резервных копий sourceforge.net/projects/automysqlbackup

Ответ №2:

PHP не нужен. Вы можете запланировать периодический запуск запроса через задание cron и вывод в CSV, используя код, подобный следующему:

 SELECT col1, col2, col3 FROM table WHERE whatever='whatever' INTO OUTFILE 'reports/result.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY ‘\’
LINES TERMINATED BY 'n'
  

С приведенным выше запросом, сохраненным в файле, команда cron будет выглядеть следующим образом

 mysql -u username -p password < filewiththequery.sql
  

Если вам нужно выгрузить всю базу данных таким образом, чтобы ее можно было повторно импортировать в базу данных, используйте mysqldump вместо этого.

Комментарии:

1. Это входит в файл задания cron?

2. Если ваш запрос длинный, сохраните его в .sql файле и вызовите файл из команды cron. Полная запись в crontab будет выглядеть следующим образом: 0 * * * * mysql -u username -p password < filewiththequery.sql предполагая, что она выполняется в начале каждого часа.

3. ОК. Разве мне не нужно включать имя таблицы в мой SQL?

4. @shummel7845 извините, да, вам нужна полная инструкция SQL перед INTO OUTFILE 'filename.csv' редактированием выше.

Ответ №3:

создайте скрипт со следующим в нем:

 select * into outfile '/tmp/data.csv' 
  

поля, завершающиеся символом ‘,’ закрываются символом ‘»‘
экранировано »
строки, заканчивающиеся ‘n’
из таблицы;

чтобы запланировать задание crontab -u username -e

0 24/4 * * * пользовательское скриптоимя

Это должно давать вам дамп каждые 6 часов.

Вам нужно будет ознакомиться с каким-нибудь языком сценариев, чтобы предоставлять уникальное имя вашей инструкции mysql при каждом ее запуске.

Комментарии:

1. Я хочу, чтобы он перезаписал старую работу, поэтому, если я использую ваш код как есть, не будет ли он этого делать?