使用PHP和MySQLi导入CSV替代方法

时间:2017-02-25 09:00:05

标签: php mysql

我使用下面的代码将CSV文本文件导入到我的表中,但我的新主机不允许LOAD DATA命令并强制我找到导入文件的替代方法。当然,他们没有给我一个明确的答案。

除了LOAD DATA LOCALLOAD DATA之外还有哪些方法可以通过PHP / MySQLi将CSV文件导入我的MySQL表中?

  // Query - import CSV file into DB, ignore top 3 lines
    $sql= "LOAD DATA LOCAL INFILE '".$import_file."' INTO TABLE `$dbtable`
       FIELDS TERMINATED BY '".$fieldseparator."'
       LINES TERMINATED BY '".$lineseparator."'
       IGNORE 3 LINES
       SET TIMESTAMP = '".$local_time."'";

由于

编辑:

在查看建议的fgetcsv函数后,我想出了下面的代码。理论上,它应该工作,但代码似乎加载,直到它最终超时而不显示错误。数据库仅使用单行条目填充。

我在这里做错了什么?

                if ($import_file) {
                  // set row counter to 0
                  $line = 0;

                  while ( ($row = fgetcsv($import_file)) !== false ) {

                    // ignore the first 3 rows of the file based on iteration of the counter
                    if ($line <= 3) {
                      $line++;
                      continue;
                    } else {

                        // if row count is higher than 3, insert into database
                        $sql = "INSERT INTO `$dbtable`
                          (`OPERA_CONF`, `CRS`, `HOLIDEX`, `ARRIVAL`)
                          VALUES (
                            '" . $row[0] . "',
                            '" . $row[1] . "',
                            '" . $row[2] . "',
                            '" . $row[3] . "'
                          )";

                        // execute query
                        $mysqli->query($sql);
                        $line++;

                    }

                  }

                } else {
                    echo "\n CSV file could not be found.";
                }

1 个答案:

答案 0 :(得分:1)

您必须逐行使用PHP来读取CSV文件的内容并将其插入表中。

查看http://www.readmyviews.com/import-csv-data-mysql-using-php/

此处粘贴的代码易于使用:

------- explicit converter -------
{"Value":null}