繁体   English   中英

需要将大量的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处理该文件并将其插入DB中。

要么

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

专用服务器可用

具有8GB内存的优质PC

你有什么建议?

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

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命令并执行这些命令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM