我被要求在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命令并执行这些命令。