自动将csv文件传输到MySQL

时间:2011-03-15 15:48:18

标签: mysql database bash csv phpmyadmin

我有一个csv文件,我将通过调用cygwin + bash脚本的批处理脚本定期更新。 我想自动将csv文件上传到MySQL数据库,以便我的数据库中的表定期用csv文件更新。该数据库当前正在Windows Server 2003计算机上运行,​​并使用phpMyAdmin进行管理。

我已经在网上找到了一些可以实现其中一部分的方法,但我对这些来源中的代码放置位置以及如何调用这些代码感到困惑。例如,Import CSV file directly into MySQL似乎显示了如何从SQL命令行上传一个csv文件到MySQL数据库,但不是重复,后者就是我需要的。

如果可能的话,我更喜欢解决方案涉及bash脚本(而不是批处理和php)(即我更喜欢可以与更新csv文件的bash脚本集成的解决方案

谢谢

3 个答案:

答案 0 :(得分:5)

您可以通过执行以下操作从命令行执行MySQL脚本:

mysql -uUsername -pPassword database_name < infile.sql

您可以从命令行和infile.sql中调用它,您可以使用以下代码:

LOAD DATA INFILE 'filename.csv' TO table_name 
FIELDS TERMINATED BY ','

答案 1 :(得分:0)

您可以使用此处的文档:

# some bash script stuff
mysql ... <<EOF
SQL COMMANDS
GO HERE
EOF
# more bash script stuff

答案 2 :(得分:-1)

您可以使用Quartz创建cronjob-定期更新数据库。在cronmaker(http://www.cronmaker.com/)的帮助下,您可以选择何时以及更新数据库的频率。

这是一个示例SQL脚本,用于将数据导入您的MySQL数据库:

LOAD DATA INFILE 'c:/.../filename.csv' 
INTO TABLE discounts 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

使用您喜欢的语言在您的cronjob中运行以上脚本。