需要将一组大的csv文件插入数据库中


Larg set of csv files need to be inserted into a database

我被要求在csv文件上插入csv->mysql。

他们有2万个csv文件,其中包含100到10万行数据。

下面是我认为我可以做的:

在我的机器上,我可以使用一个简单的命令将所有文件连接到1中:

 copy *.csv  combined.csv 

然后处理该文件,然后使用php-fgetcsv处理该文件并将其插入数据库。

我可以写一个php程序,读取一个目录,处理每个文件,完成后将其转移到另一个文件夹中。

专用服务器可用

良好的Pc与8gb内存可用

你有什么建议?

使用LOAD DATA INFOILE。最好逐个文件插入数据。

LOAD DATA INFILE '/path/to/data.csv' 
INTO TABLE `table` 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY ''n' 

以批处理模式运行20k个文件。在命令中输入密码以防止其询问。

#!/bin/bash
for f in /path/to/*.csv;
do 
    mysql -uroot -pPASSWORD DATABASE '
    -e "LOAD DATA INFILE '$f' 
        INTO TABLE `table` 
        FIELDS TERMINATED BY ',' 
        LINES TERMINATED BY ''n'"
    echo $f is imported ...
done;

最好是逐个文件进行。这允许在出现问题时重新启动,而且,所有文件都相同吗?

您可以使用php脚本生成sql命令并执行这些命令。