我想让将数据加载到 MySQL 数据库(Ubuntu 12.04)中成为一项 cron 工作。我可以使用代码手动完成:
LOAD LOCAL DATA
INFILE re.txt
INTO table rasss
LINES TERMINATED BY '|'
Run Code Online (Sandbox Code Playgroud)
我也知道如何向crontab -e
文件添加作业,但我只对单行命令这样做
最好的解决方案是为此编写一个简短的脚本,然后调用该脚本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"
Run Code Online (Sandbox Code Playgroud)
至于把它放在哪里,好吧,这取决于你。请记住,如果您使用 root,crontab
那么脚本将以 root 权限执行,并且必须归所有root
(而不是全局可写)。出于这个原因,我有时在/root
.
希望这可以帮助 :)