如何更快地将csv文件上传到mysql数据库

时间:2013-05-17 11:34:34

标签: php mysql sql csv

我想通过php将csv文件上传到mysql数据库。 我在数据库中已经有超过20,000条记录。现在,当我上传包含大约1000条记录的csv文件时,在本地计算机上本身上传需要很长时间。

请帮助并建议优化查询,将csv文件上传到具有大量记录的mysql数据库中。

记录数量会影响数据库的性能吗?? ??

来自评论的编辑

目前使用的代码:

LOAD DATA INFILE '$file_name' IGNORE 
INTO TABLE import 
FIELDS TERMINATED BY '|' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES (@srno,@customer_name,@date,@mobno,@city,@state,@type,@telecaller) 
SET customer_name=@customer_name,date=@date,mobno=@mobno,city=@city, state=@state,type=@type,telecaller=@telecaller,datetime='$datetime';

2 个答案:

答案 0 :(得分:1)

mysql的USE命令行工具:LOAD DATA INFILE

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

答案 1 :(得分:0)

使用fgetcsv()函数使用php从csv文件加载数据,按照您希望的方式格式化,并创建提交到mysql db的查询。我使用它来创建一个1.5M行的数据库,使用csv文件,每个文件包含超过10000条记录,没有任何问题。 1000条记录应该不是问题。

示例:

      $h = fopen("your_file.csv", "r");
      $data = fgetcsv($h, "10000", ",");

你的csv文件中的第一行是$ data [0]。 $ data [0] [0]将包含用“,”分隔的第一个单词。 例如:如果你有:“猫,狗,老鼠”,那么,

    $data[0][0] = "cat"
    $data[0][1] = "dog"

等。现在,由于您在$ data数组中有记录,因此可以使用它来生成sqls并将它们插入到db