php - 使用 PHP 将 CSV 导入 MySQL 时出错

标签 php mysql csv

我正在尝试使用此代码将 csv 文件导入到我的 MySQL 数据库中:

... 感谢您解决了这个问题!! ....

我做错了什么?

<小时/>

伙计们,我可以解决这个问题,但现在...我有另一个问题,这是现在的代码:

<?php
$databasehost = "localhost"; 
$databasename = "cauctti"; 
$databasetable = "sample"; 
$databaseusername="root"; 
$databasepassword = "toor"; 
$fieldseparator = ";"; 
$lineseparator = "\r|n";
$csvfile = "Reporting.csv";

if(!file_exists($csvfile)) {
    die("File not found. Make sure you specified the correct path.");
}

try {
    $pdo = new PDO("mysql:host=$databasehost;dbname=$databasename", 
        $databaseusername, $databasepassword,
        array(
            PDO::MYSQL_ATTR_LOCAL_INFILE => true,
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
        )
    );
} catch (PDOException $e) {
    die("database connection failed: ".$e->getMessage());
}

$affectedRows = $pdo->exec("
      LOAD DATA LOCAL INFILE ".$pdo->quote($csvfile)." INTO TABLE `$databasetable`
      FIELDS TERMINATED BY ".$pdo->quote($fieldseparator)."
      LINES TERMINATED BY ".$pdo->quote($lineseparator));

echo "Loaded a total of $affectedRows records from this csv file.\n";

?>

当我尝试运行它时,只在表格上插入一行...

Loaded a total of 1 records from this csv file.

当我的 csv 文件有大约 5000 个条目时,为什么它只得到一行...

最佳答案

发现here

您应该在查询中设置CHARACTER SET UTF8

示例:

LOAD DATA INFILE 'file'
IGNORE INTO TABLE table
CHARACTER SET UTF8
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'

关于php - 使用 PHP 将 CSV 导入 MySQL 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35557063/

相关文章:

php - 比较逗号分隔字符串之间的差异

php mysql jquery javascript 聊天

csv - 特征缩放/归一化中的最小值和最大值?

php - 在 php 中比较 2 个 csv 文件和 1 列

php - 奇怪的 MySQL/PHP 错误

php - 使用 PHP 将 MySQL 表中的数组内容分成多行

php - Favicon 存储和检索 |最佳实践

mysql - 将 `show create procedure procedure_name` 的结果存储到 MySql 中的一个变量中

php - 仅当 id 存在于该表中时才从表中选择 mysql pdo php

shell - 使用 UNIX 命令替换 csv 中的字符或修复不正确的换行符