【问题标题】:Import large csv file to mysql database using php使用php将大型csv文件导入mysql数据库
【发布时间】:2011-04-16 03:03:07
【问题描述】:

我有一个非常大的 CSV 文件 (150 MB)。将其导入 MySQL 的最佳方法是什么? 在将其插入 MySQL 表之前,我必须在 PHP 中进行一些操作。

【问题讨论】:

标签: php mysql import-from-csv


【解决方案1】:

您可以查看 MySQL 中的LOAD DATA INFILE

一旦将数据加载到 MySQL 中,您就可以进行操作,而不是先将其读入 PHP。首先使用 LOAD DATA INFILE 将原始数据存储在临时表中,然后使用如下语句将数据转换为目标表:

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

【讨论】:

  • + 1 表示 LOAD DATA INFILE。如果您使用 phpmyadmin(显然是 PHP :),您可以轻松比较几种最流行的方法:SELECT INTO 和 LOAD DATA INFILE 及其所有不同的 args 和参数。你会得到最适合你的。很可能是 LOAD DATA INFILE
  • 根据他必须对数据进行的操作量,首先将其读入 php 并一次插入一行可能更可行。如果操作量很大,那么无论如何在脚本中执行它会更有效,然后他有两个操作。 1. 使用 LOAD DATA INFILE,然后 2. 使用 UPDATE TABLE 查询。
【解决方案2】:

我会用 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 2014-01-06
    • 2014-07-15
    • 2012-11-23
    • 2017-01-21
    • 1970-01-01
    • 2014-03-15
    相关资源
    最近更新 更多