2

我想在指定的时间自动从指定的“文件夹”导入大约 3000 个 CSV 文件。每天都会更新 CSV 文件以包含新数据。

我知道我应该使用命令行工具“mysqlimport”和 --replace 选项,(因为有时旧数据会被更改)

4

1 回答 1

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";
    }
    ?>
于 2014-03-08T13:21:18.010 回答