我被要求做一个csv - >在CSV文件上插入mysql。
他们拥有20k的csv文件,其中包含100到100k行的数据。
所以这就是我认为我可以做的事情:
在我的机器上,我可以使用一个简单的命令将所有文件加入到1中:
copy *.csv combined.csv
然后处理该文件,然后使用php fgetcsv处理该文件并将其插入数据库。
或
我可以编写一个php程序来读取目录处理每个文件,并在完成后将其传输到另一个文件夹。
专用服务器可用
具有8gb可用内存的良好PC;
你有什么建议?
答案 0 :(得分:3)
使用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;
答案 1 :(得分:0)
按文件逐个进行是一个更好的主意。如果出现问题,这允许重新启动,并且所有文件都相同吗?
您可以使用php脚本生成sql命令并执行它们。