我正在处理一个组件,我将数据从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)
我似乎无法弄清楚差异。有没有人有建议?
提前感谢您的帮助!
答案 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