2014-11-16 144 views
0

我有這樣的XML:#1054 - 在 '字段列表' 未知列 '名'

<product> 
<id>3</id> 
<name>myname</name> 
<weight>67</weight> 
<price>$34.00</price> 
</product> 

我也有一個MySQL表:

+-----------+--------+-------------+ 
| ID  | Title | Price  | 
+-----------+--------+-------------+ 
|   1 | title1 | $19.00  | 
|   2 | title2 | $24.00  | 
+-----------+--------+-------------+ 

我試圖插入XML文件到表使用此代碼:

LOAD XML LOCAL INFILE 'pathtothefile/filename.xml' 
INTO TABLE mytable 
ROWS IDENTIFIED BY '<product>' 
SET ID = id, Title=name, Price=price; 

但我得到這個錯誤#1054 - 在「字段列表」

未知列「名」

回答

0

試試這個:

LOAD XML LOCAL INFILE 'pathtothefile/filename.xml' 
INTO TABLE mytable 
ROWS IDENTIFIED BY '<product>' 
SET ID = id, Title=`name`, Price=price; 
; 

或者這樣:

LOAD XML LOCAL INFILE 'pathtothefile/filename.xml' 
INTO TABLE mytable 
ROWS IDENTIFIED BY '<product>' 
(ID, Title, Price) 
; 
+0

它不起作用。現在我會用另一種方式來做,但我想了解爲什麼這不起作用。 – splunk

0

我將避免試圖寫一個SQL語句,將做XML數據庫字段映射,如果相應的字段的名稱並不完全相同。

創建一個具有與XML標記相同的列名的臨時表,或創建一個像mytable和ALTER這樣的臨時表。然後這些語句就足夠了:

CREATE TEMP TABLE myXMLtable LIKE mytable; 

ALTER myXMLtable... (rename the fields like you have them in the XML) 

LOAD XML LOCAL INFILE '/whatever/filename.xml' 
INTO TABLE myXMLtable 
ROWS IDENTIFIED BY '<product>'; 

之後再次重命名並將myXMLtable條目複製到mytable。

相關問題