使用PHP CSV导入脚本时被错误包围
我有CSV文件,需要导入到MySQL数据库。我正在使用PHP脚本导入CSV 脚本工作正常,直到我添加一个封闭的BY语句,我之所以添加该语句,是因为CSV列中的一个值包含带逗号的文本,但该值用引号括起来 以下是CSV列的一个示例,其中包含用引号括起来的值: ,“1名注册管理员,完整维修记录,中控锁,电动车窗,电动后视镜,ABS,牵引力控制,气候控制,动力转向,驾驶员安全气囊,乘客安全气囊,侧气囊,巡航控制,报警器,防盗器,半真皮内饰,合金车轮” 以下是我尝试使用的脚本:使用PHP CSV导入脚本时被错误包围,php,mysql,csv,Php,Mysql,Csv,我有CSV文件,需要导入到MySQL数据库。我正在使用PHP脚本导入CSV 脚本工作正常,直到我添加一个封闭的BY语句,我之所以添加该语句,是因为CSV列中的一个值包含带逗号的文本,但该值用引号括起来 以下是CSV列的一个示例,其中包含用引号括起来的值: ,“1名注册管理员,完整维修记录,中控锁,电动车窗,电动后视镜,ABS,牵引力控制,气候控制,动力转向,驾驶员安全气囊,乘客安全气囊,侧气囊,巡航控制,报警器,防盗器,半真皮内饰,合金车轮” 以下是我尝试使用的脚本: <?php $dat
<?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";
?>
及
我得到一个错误:(
如果您知道我做错了什么,请提供任何提示!?看起来您的字符周围缺少引号:
ENCLOSED BY '".$pdo->quote($enclosedbyquote)."'
你应该看一下。你需要把字段
放在word的前面
而不是
ENCLOSED BY ".$pdo->quote($enclosedbyquote)."
FIELDS TERMINATED BY ".$pdo->quote($fieldseparator)."
你应该:
FIELDS ENCLOSED BY ".$pdo->quote($enclosedbyquote)."
TERMINATED BY ".$pdo->quote($fieldseparator)."
并非所有字段都是封闭的,因此您应该改用“可选封闭方式”。您得到了什么错误?我现在只剩下这个错误:(致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解使用near的正确语法'\在/home/dealerby/public_html/driven_import.php:35堆栈跟踪:#0/home/dealerby/public_html/driven_import.php(35):PDO->exec('???LOAD DATA LOC…')#1{main}中的第2行中,''字段终止于','行终止于'\n'忽略1行'在第35行的/home/dealerby/public\u html/driven\u import.php中抛出,那么您现在的查询是什么?您是否删除了由括起来的
?我在这个查询中没有看到它?我正在使用这个查询:$affectedRows=$pdo->exec(“加载数据本地填充”。$pdo->quote($csvfile)。“替换为表$databasetable
字段,可选地由
括起来”.$pdo->quote($enclosedbyquote)。“字段以“$pdo->quote($fieldseparator)”结尾。行以“$pdo->quote($lineseparator)”结尾。“忽略1行”);不要使用字段
2次。它们只能作为字段使用一次,可以选择由…括起来,以…终止。
而不是字段,可以选择由…括起来,以…终止。
ENCLOSED BY ".$pdo->quote($enclosedbyquote)."
FIELDS TERMINATED BY ".$pdo->quote($fieldseparator)."
FIELDS ENCLOSED BY ".$pdo->quote($enclosedbyquote)."
TERMINATED BY ".$pdo->quote($fieldseparator)."