mysql php加载数据填充上的语法错误

mysql php加载数据填充上的语法错误,php,mysql,sql,csv,Php,Mysql,Sql,Csv,这是我第一次尝试将数据从csv文件导入mysql表 问题是csv列的顺序与表中的顺序不匹配,而且csv中缺少一列(自动递增)id。我试图这样做,但它给了我语法错误 $sql="LOAD DATA INFILE '$file' INTO TABLE calls FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' OPTIONALLY ENCLOSED BY ".'"'." (`account_code`,`sour

这是我第一次尝试将数据从csv文件导入mysql表

问题是csv列的顺序与表中的顺序不匹配,而且csv中缺少一列(自动递增)
id
。我试图这样做,但它给了我语法错误

        $sql="LOAD DATA INFILE '$file' 
 INTO TABLE calls 
 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' 
 OPTIONALLY ENCLOSED BY ".'"'." 
 (`account_code`,`source`,`destination`,`dbcontext`,`caller_id`,`channel`,`destination-channel`,`lastapp`,`lastdata`,`start`,`answer`,`end`,`duration`,`billseconds`,`disposition`,`amaflag`,`call_id`,`userfield`)";
请注意,
$file
是动态生成的文件名。我在执行查询时得到这个错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTIONALLY ENCLOSED BY " (`account_code`,`source`,`destination`,`dbcontext`,`' at line 4
知道为什么吗

谢谢 艾哈迈尔这:

OPTIONALLY ENCLOSED BY "
需要

OPTIONALLY ENCLOSED BY '"'
因此,您的代码应该更改为

$sql="LOAD DATA INFILE '$file' 
 INTO TABLE calls 
 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
 LINES TERMINATED BY '\r\n' 

 (`account_code`,`source`,`destination`,`dbcontext`,`caller_id`,`channel`,`destination-channel`,`lastapp`,`lastdata`,`start`,`answer`,`end`,`duration`,`billseconds`,`disposition`,`amaflag`,`call_id`,`userfield`)";

(添加所需的单引号和交换子句的顺序都已更改,但我还将您的连接更改为更可读的形式)。

封闭的by子句不应该有两个引号字符吗?看起来你只有one@Clive只是尝试了两个错误,但仍然是相同的错误顺便说一句,你可以用just
\“
替换
“我这样做了,但仍然不起作用尝试编辑,你的方法有点错误(括起来的
指的是字段,而不是行)。该查询不再给我一个语法错误,因此您应该可以在我的本地服务器上搜索我给脚本提供的绝对路径如下C:\wamp\tmp\php790E.tmp,但它会自动转到bin文件夹,并给我这个错误C:\wamp\bin\mysql\mysql5.6.12\data\wamp mpphp790E.tmp'未找到(错误代码:22-无效参数)您知道如何避免这种情况吗?恐怕我不知道-我使用*nix,并且始终使用绝对路径(/path/to/file);我以前没有遇到过这个问题,但似乎你的道路被解释为一条相对的道路