2014-04-18 42 views
0

我正在處理一個組件,在其中將數據從CSV文件加載到mySQL數據庫。我正在使用LOAD DATA LOCAL INFILE。除了一件事以外,它效果很好。在Joomla中,查詢替換了表中的所有數據。 (它截斷表格,然後添加新的數據)。我只是想讓它在表格底部插入新行。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

什麼版本的Joomla? – Elin

+0

我使用Joomla 3.2.3 – mb87

+0

抱歉打擾大家。這個錯誤是自己造成的。對於另一個應用程序(我從中複製代碼),我包含了一些代碼來截斷表。這是導致問題的原因,而不是LOAD DATA LOCAL INFILE命令。 Doh !!! – mb87

回答

0

通常這不應該發生的phpMyAdmin是PHP的,所以也許的Joomla有LOAD之前,但在所有情況下TRUNCATE嘗試使用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

+0

不幸的是沒有工作。另外,我已經在查詢底部使用IGNORE來忽略文件中的行。還有其他建議嗎? – mb87

相關問題