我想将数据加载到 MySQL 数据库 (Ubuntu 12.04) 中作为 cron 作业。我可以使用以下代码手动完成此操作:
LOAD LOCAL DATA
INFILE re.txt
INTO table rasss
LINES TERMINATED BY '|'
我也知道如何将作业添加到文件crontab -e
,但我只对单行命令这样做过
答案1
最好的解决方案是编写一个简短的脚本,然后从中调用该脚本cron
- 您可以将其作为一行代码完成,但它很丑陋且难以维护,并且没有任何优势。(如果您需要一个例子,请告诉我)
编辑:
尝试按照以下思路做些事情,这是我的脑子里想到的:
#!/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"
至于把它放在哪里,那由你决定。请记住,如果你使用 root,crontab
那么脚本将以 root 权限执行,并且必须由所有者拥有root
(并且不能是全局可写的)。出于这个原因,我有时会在 中放置这种脚本/root
。
希望这可以帮助 :)