PHP/Mysql加载数据本地infile
问题描述:
我已经尝试了所有我能想到的,但由于某种原因,我无法得到这个工作。PHP/Mysql加载数据本地infile
我有一段PHP代码,将本地存储的CSV文件加载到MySQL数据库中。它完全在一个脚本:
$query = 'LOAD DATA LOCAL INFILE \''.$arp_input.'\' INTO TABLE arp_import FIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'"\' LINES TERMINATED BY \'\r\n\' (not_used,account_number,check_serial,issue_date,amount,transaction_code,additional_text)';
不过,我需要做同样的事情(加载CSV)在另一个脚本,它本质上是一回事,但会产生不同的格式。下面是该查询:
$query = 'LOAD DATA LOCAL INFILE \''.$ap_input.'\' INTO TABLE ap_import FIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'"\' LINES TERMINATED BY \'\r\n\' (account_number,check,paiddate,amount)';
但是,当我运行上面的查询第二个脚本,我得到这个错误:当我拿出领域在第二查询的末尾列出
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 'check,paiddate,amount)' at line 1
,它只从文件中导入一行,即使在我尝试\ n分隔符,\ r和\ r \ n时也是如此。
我尝试了所有我能想到的。这两个PHP脚本在同一台服务器上运行,它们都在访问相同的远程MySQL服务器。我在这里错过了什么?
答
根据MySQL文档检查是一个保留字。
+0
啊,非常简单。就是这样。现在我需要弄清楚为什么只有一条线。 –
答
check
是 MySQL中的保留字(http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html)。你应该把它放在你的sql语句中的back-ticks(`)中:
'$ ap_input' v.s. '$ arp_input'('R')?.是那个意图,或者可能是$ ap_input一个类型,你真的想''INFILE''INTO ...'? –