LOAD DATA LOCAL INFILE在Joomla中无法正常工作。替换而不是在表中附加数据

时间:2014-04-18 21:55:22

标签: mysql joomla

我正在处理一个组件,我将数据从CSV文件加载到mySQL数据库。我正在使用LOAD DATA LOCAL INFILE。除了一件事,它的效果很好。在Joomla中,查询替换表中的所有数据。 (它截断表格,然后添加新数据)。我只是想让它在表格的底部插入新行。

这是我正在使用的代码:

$db = JFactory::getDbo();

$loaddata_query = "LOAD DATA LOCAL INFILE 'c:/data/mydata.csv'"
."\n INTO TABLE  myDataTable"
."\n FIELDS TERMINATED BY ','"
."\n OPTIONALLY ENCLOSED BY '" . "\"" . "'"
."\n LINES TERMINATED BY '\\n'"
."\n IGNORE 1 LINES"
."\n (column1,column2,column3);                     

$db->setQuery($loaddata_query);
$result = $db->query();

就像我说的,这适用于导入数据,但替换所有记录。但是,如果我回显$ loaddata_query并将其复制并粘贴到phpMyAdmin中,它可以正常工作。这是回显的查询:

LOAD DATA LOCAL INFILE 'c:/data/mydata.csv'
TO TABLE myDataTable
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES 
(column1,column2,column3)

我似乎无法弄清楚差异。有没有人有建议?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

通常这不应该发生,因为phpmyadmin是php,所以也许joomla在TRUNCATE之前有一个LOAD,但在所有情况下都尝试使用IGNORE关键字

像这样:

LOAD DATA LOCAL INFILE IGNORE 'c:/data/mydata.csv'
TO TABLE myDataTable
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES 
(column1,column2,column3)

此处有更多信息:http://dev.mysql.com/doc/refman/5.0/en/load-data.html