Я хотел бы сделать загрузку данных в базу данных MySQL (Ubuntu 12.04) задачей cron. Я могу сделать это вручную, используя код:
LOAD LOCAL DATA
INFILE re.txt
INTO table rasss
LINES TERMINATED BY '|'
Я также знаю, как добавить задание в файл crontab -e
, но я сделал это только для однострочных команд
лучшее решение было бы сделать короткий сценарий этого и вызвать этот сценарий из cron
- вы могли бы сделать это как одну строку, но это было бы уродливо и трудно поддерживать, и нет никакого преимущества иметь (дайте мне знать, если вам нужен пример)
редактировать:
попробовать что-то в этом духе: «117]
#!/bin/bash
DB_USER='my_user';
DB_PASSWD='passwd';
DB_NAME='db_name';
TABLE='rass';
INPUT_FILE='/full/path/to/re.txt';
SQL="USE $DB_NAME; LOAD LOCAL DATA INFILE '$INPUT_FILE' REPLACE INTO TABLE `$TABLE` LINES TERMINATED BY '|' CHARACTER SET utf8;"
mysql --user=$DB_USER --password=$DB_PASSWD --default_character_set utf8 $DB_NAME -e "$SQL"
[ 118] Что касается того, где его поставить, то это зависит от вас. Имейте в виду, что если вы используете root crontab
, то скрипт будет выполняться с правами root и должен принадлежать root
(и не должен быть доступен для записи всем пользователям). По этой причине у меня иногда есть сценарии такого рода в /root
.
Надеюсь, это поможет:)