在linux环境中自动执行mysql db中的csv导入

时间:2016-04-19 05:06:53

标签: mysql linux shell

有没有办法在mysql db中自动将.csv导入到SQL表中?我知道如何手动完成,但有一种情况是每晚从PeopleSoft导出.csv,我们希望在linux环境中自动导入到SQL Table中。请给我一个样本脚本来做那个..如果有方法,有人能指出我的方向(我不是SQL专家)!!

2 个答案:

答案 0 :(得分:0)

您可以尝试创建存储过程, 将load csv query写入SP。 创建事件以调用SP。 我希望这有帮助。

 CREATE EVENT IF NOT EXISTS `load_csv_event`
    ON SCHEDULE EVERY 23 DAY_HOUR
    DO CALL my_sp_load_csv();

Alos,您可以直接创建事件并在其中编写加载查询。

答案 1 :(得分:0)

您可以创建一个crontab作业,例如:

* * * * * /path/to/load_script.sh

load_script.sh可能就像(不要忘记让它可执行):

#!/bin/bash
IMPORTED_FILE_PATH=/path/to/your/imported/file.csv
TABLENAME=target_table_name
DATABASE=db_name
TMP_FILENAME=/tmp/${TABLENAME}.cvs
# do nothing if imported file does not exist
[ -f "$IMPORTED_FILE_PATH" ] || exit 0
# if temporary file exists, then it means previous import job is running. Also do nothing
[ -f "$TMP_FILENAME" ] && exit 0
# Move it to tmp and rename to target table name
mv "$IMPORTED_FILE_PATH" "$TMP_FILENAME"
mysqlimport --user=mysqlusername --password=mysqlpassword --host=mysqlhost --local $DATABASE $TMP_FILENAME
rm -f "$TMP_FILENAME"

这只是一个例子(未经测试)。您应该添加错误处理,日志记录等。 另请查看mysqlimport

的手册