使用 cron 将数据加载到 MySQL 数据库

使用 cron 将数据加载到 MySQL 数据库

我想将数据加载到 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

希望这可以帮助 :)

相关内容