【问题标题】:LOAD DATA LOCAL INFILE only enters 5 lineLOAD DATA LOCAL INFILE 只进入 5 行
【发布时间】:2017-02-26 11:28:56
【问题描述】:

我有一个 csv 文件,我正在使用LOAD DATA LOCAL INFILE 命令将它加载到 mysql 中,但我不知道为什么它只读取 5 行。 这是我的php代码:

<?php
include "../config.php";
$conn = new mysqli( $servername, $username, $password, $dbname );
if ( $conn->connect_error ) {
    die( "Connection failed: " . $conn->connect_error );
} //$conn->connect_error

$sql= "LOAD DATA LOCAL INFILE 'uploads/cell.csv'
INTO TABLE table3
CHARACTER SET UTF8
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'";
$result           = $conn->query( $sql );
echo("Error description: " . mysqli_error($conn));
?>

csv 文件附在下面的链接中。

cell.csv

执行php代码后的Mysql是这样的:

【问题讨论】:

  • 您应该删除该 CSV 文件中的标题行。只需将值留在表中,然后重试。你也可以告诉 MySQL 省略一些行。看看stackoverflow.com/questions/14127529/…
  • 我删除了超过 10 行,但是当我删除这些时它什么也没增加
  • 我看到有些字段有多个逗号,它破坏了结构。在您的查询中使用: FIELDS TERMINATED BY ',' ENCLOSED BY '"' 而不是 FIELDS TERMINATED BY ',' 。您可以阅读本教程:mysqltutorial.org/import-csv-file-mysql-table 。另外我不确定行是否由 \r\n 终止或者只是 \n .

标签: php mysql csv load-data-infile


【解决方案1】:

我终于自己弄明白了,问题是/r/n,有些行以/r结尾,有些以/r/n结尾,我把代码改成:

<?php
include "../config.php";
$conn = new mysqli( $servername, $username, $password, $dbname );
if ( $conn->connect_error ) {
    die( "Connection failed: " . $conn->connect_error );
} //$conn->connect_error

$sql= "LOAD DATA LOCAL INFILE 'uploads/cell.csv'
INTO TABLE table3
CHARACTER SET UTF8
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r'";
$result           = $conn->query( $sql );
echo("Error description: " . mysqli_error($conn));
?>

它解决了问题。

【讨论】:

    猜你喜欢
    • 2014-11-08
    • 2013-01-14
    • 2013-01-13
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 2012-06-01
    相关资源
    最近更新 更多