2015-10-11 6 views
0

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

я знаю, как вручную загрузить в MySQL через CSV т.е. с помощью моей командной строки:

LOAD DATA INFILE 'c:/tmp/discounts_2.csv'INTO TABLE discountsFIELDS TERMINATED BY ',' ENCLOSED BY '"'LINES TERMINATED BY '\n'IGNORE 1 ROWS(title,@expired_date,amount)SET expired_date = STR_TO_DATE(@expired_date, '%m/%d/%Y'); 

однако, я не уверен, как идти о создавая задание cron, которое автоматически связывается с командной строкой, а затем выполняет эту функцию.

Я думаю, что я хочу, указатель на то, как я могу это сделать.

ОБНОВЛЕНИЕ @fancyPants задал вопрос: «Чего я хочу делать cronJob?» ответ в этом. Я хочу, чтобы задание cronJob обращалось к CSV-файлу (который я ранее загрузил) , а затем загрузил все эти значения из CSV-файла в базу данных mysql.

Я знаю команду для преобразования CSV в mysql;

LOAD DATA INFILE 'C: /tmp/discounts_2.csv'INTO ТАБЛИЦА discountsFIELDS ОТМЕНЯЛОСЬ BY',»ЗАКРЫТАЯ BY '"' ЛИНИИ расторгнуто '\ n'IGNORE 1 РЯДОВ (название, @ EXPIRED_DATE, сумма) SET EXPIRED_DATE = STR_TO_DATE (@expired_date, '% м /% d /% Y');

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

+0

Вы хотите, чтобы cronjob сделал то, что именно? – fancyPants

+0

привет fancyPants. Я хочу, чтобы задание cron по существу обращалось к файлу cvs, а затем загрузило значения CSV-файла в таблицу mysql –

ответ

0

Создайте событие MySQL, а не cr на работу.

Включить планировщик событий с

SET GLOBAL event_scheduler = ON; 

и создать событие, как это:

DELIMITER $ 
CREATE EVENT 
ON SCHEDULE EVERY 1 DAY 
STARTS '2015-10-11 00:00:00' 
DO 
BEGIN 
TRUNCATE TABLE discounts; 
LOAD DATA INFILE 'c:/tmp/discounts_2.csv'INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"'LINES TERMINATED BY '\n'IGNORE 1 ROWS(title,@expired_date,amount)SET expired_date = STR_TO_DATE(@expired_date, '%m/%d/%Y'); 
END $ 
DELIMITER ; 

и это все.

Подробнее о синтаксисе here и here - это более общая информация о нем.

+0

hey fancyPants. спасибо за это советую. Я буду смотреть в него. два быстрый вопрос. я должен сначала удалить предыдущие данные в таблице. (мой страх в том, что если мне сначала нужно удалить информацию, сайт не будет работать на время передачи данных –

+0

другими словами, как обойти проблему обновления базы данных во время передачи CSV, когда много информации в базе данных будет изменяться. Вы просто удаляете базу данных и загружаете ее из свежих или делаем обновление –

+0

Да, сначала обрезать таблицу, вероятно, лучше всего. Для нескольких операторов в случае необходимости немного настроить синтаксис. мой ответ соответственно. – fancyPants

Смежные вопросы