[英]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.