【发布时间】:2011-04-16 03:03:07
【问题描述】:
我有一个非常大的 CSV 文件 (150 MB)。将其导入 MySQL 的最佳方法是什么? 在将其插入 MySQL 表之前,我必须在 PHP 中进行一些操作。
【问题讨论】:
-
在stackoverflow.com/a/22744300/2037323查看我的解决方案,其中还包括一些比较
标签: php mysql import-from-csv
我有一个非常大的 CSV 文件 (150 MB)。将其导入 MySQL 的最佳方法是什么? 在将其插入 MySQL 表之前,我必须在 PHP 中进行一些操作。
【问题讨论】:
标签: php mysql import-from-csv
您可以查看 MySQL 中的LOAD DATA INFILE。
一旦将数据加载到 MySQL 中,您就可以进行操作,而不是先将其读入 PHP。首先使用 LOAD DATA INFILE 将原始数据存储在临时表中,然后使用如下语句将数据转换为目标表:
INSERT INTO targettable (x, y, z)
SELECT foo(x), bar(y), z
FROM temptable
【讨论】:
我会用 fopen 打开它并使用 fgetcsv 将每一行读入一个数组。 伪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)
【讨论】: