作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 CSV 文件需要导入到 MySQL 数据库。我正在使用 PHP 脚本导入 CSV。
在我添加 ENCLOSED BY 语句之前,脚本工作正常,我添加该语句的原因是因为 CSV 列中的值之一包含带逗号的文本,但该值用引号引起来。
以下是 CSV 列的示例,其中包含用引号引起来的值:
,"1 注册守护者、完整服务历史记录、中控锁、电动车窗、电动后视镜、ABS、牵引力控制、气候控制、动力转向、驾驶员安全气囊、乘客安全气囊、侧面安全气囊、巡航控制、警报、防盗装置、半皮革内饰,合金轮毂”,
这是我尝试运行的脚本:
<?php
$databasehost = "localhost";
$databasename = "import";
$databasetable = "import";
$databaseusername="import";
$databasepassword = "password";
$fieldseparator = ",";
$lineseparator = "\n";
$enclosedbyquote = '"';
$csvfile = "test.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
)
);
} catch (PDOException $e) {
die("database connection failed: ".$e->getMessage());
}
$pdo->exec("TRUNCATE TABLE `$databasetable`");
$affectedRows = $pdo->exec("
LOAD DATA LOCAL INFILE ".$pdo->quote($csvfile)." REPLACE INTO TABLE `$databasetable`
ENCLOSED BY ".$pdo->quote($enclosedbyquote)."
FIELDS TERMINATED BY ".$pdo->quote($fieldseparator)."
LINES TERMINATED BY ".$pdo->quote($lineseparator)."
IGNORE 1 LINES");
echo "Loaded a total of $affectedRows records from this csv file.\n";
?>
自从我添加:
$enclosedbyquote = '"';
还有
ENCLOSED BY ".$pdo->quote($enclosedbyquote)."
我收到错误:(
知道我做错了什么,任何提示将不胜感激!?
最佳答案
您应该查看Syntax 。您需要将 FIELDS
一词放在第一位。
而不是
ENCLOSED BY ".$pdo->quote($enclosedbyquote)."
FIELDS TERMINATED BY ".$pdo->quote($fieldseparator)."
你应该有:
FIELDS ENCLOSED BY ".$pdo->quote($enclosedbyquote)."
TERMINATED BY ".$pdo->quote($fieldseparator)."
关于php - 使用 PHP CSV 导入脚本时出现 ENCLOSED BY 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24802765/
我是一名优秀的程序员,十分优秀!