使用php导入大型csv文件到mysql数据库

问题描述:

我有一个非常大的CSV文件(150 MB)。将其导入MySQL的最佳方式是什么? 在将它插入到MySQL表之前,我必须在PHP中进行一些操作。使用php导入大型csv文件到mysql数据库

+0

检查我在http://*.com/a/22744300/2037323解决方案,包括一些比较也 – 2014-03-30 13:08:43

你可以看看MySQL中的LOAD DATA INFILE

一旦数据加载到MySQL中,您可能可以完成操作,而不是先读取到PHP中。

INSERT INTO targettable (x, y, z) 
SELECT foo(x), bar(y), z 
FROM temptable 
+0

+ 1为LOAD DATA INFILE。如果你使用phpmyadmin(显然是PHP),你可以很容易地比较几种最流行的方法:SELECT INTO和LOAD DATA INFILE以及它们所有不同的参数和参数。你会什么最适合你。最有可能的是它是负载数据INFILE – 2010-09-23 07:46:01

+0

根据操作数量他必须做的数据,它可能是更可行的先读取到PHP和一次插入一行。如果操作的数量很大,那么无论如何都要在脚本中执行操作,然后他有两个操作。 1.用LOAD DATA INFILE然后2.用UPDATE TABLE查询。 – thomasmalt 2010-09-23 08:24:57

我只想用的fopen打开它,并使用fgetcsv读取每个行:第一店使用LOAD DATA INFILE在临时表中的原始数据,然后使用下面这样的语句将数据转换到目标表成阵列。 伪PHP如下:

mysql_connect(//connect to db); 

$filehandle = fopen("/path/to/file.csv", "r"); 
while (($data = fgetcsv($filehandle, 1000, ",")) !== FALSE) { 
    // $data is an array 
    // do your parsing here and insert into table 
} 

fclose($filehandle)