我想在指定时间自动从指定的“文件夹”导入大约3000个CSV文件。 每天都会更新CSV文件以包含新数据。
我知道我应该使用命令行工具“mysqlimport”和--replace选项,(因为有时旧数据会被更改)
答案 0 :(得分:5)
load data local infile 'uniq.csv' into table tblUniq(field1, field2, field3)
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
这是一个可选的解决方案,您唯一需要的是PHP \ Perl \ Python脚本来覆盖所有文件,并逐个插入
PHP代码:
<?php
$basedir = "/path/to/dir"
if ($handle = opendir($basedir)) {
while(false !== ($entry = readdir($handle))) {
$query = "LOAD DATA LOCAL INFILE $basedir$entry
INTO TABLE tableName
FIELDS
TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
IGNORE 1 LINES");
if(DEBUG) { echo $query . "\n"; }
if(!mysql_query($query)) {
die('MySQL error: ' . mysql_error());
}
}
} else {
echo "Could not open $basedir";
}
?>