0

我想通过 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';
4

2 回答 2

1

使用mysql的命令行工具:LOAD DATA INFILE

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

于 2013-05-17T11:36:03.000 回答
0

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

例子:

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

您将在 $data[0] 中的 csv 文件中有第一行。$data[0][0] 将包含以“,”分隔的第一个单词。例如:如果你有:“cat, dog, rat” 那么,

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

等等。既然你有 $data 数组中的记录,你可以用它来制作 sql 并将它们插入到 db

于 2013-05-17T11:45:42.223 回答