PHP / Mysql加载数据本地Infile

时间:2013-04-02 19:29:12

标签: php mysql csv

我已经尝试了所有我能想到的东西,但出于某种原因,我无法让它发挥作用。

我有一段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 \ n和\ r \ n。

我尝试过所有我能想到的东西。这两个PHP脚本在同一台服务器上运行,它们都访问同一个远程MySQL服务器。我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

根据MySQL文档,检查是一个保留字。

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

答案 1 :(得分:0)

check 是MySQL中的保留字(http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html)。你应该把它包含在你的sql语句中的反向标记(`)中: