2015-10-06 18 views
0

xml-> mysql提取的新手,我有一個xml文件試圖映射到mysql表。 xml文件字段與我的phpmyadmin表字段不同,所以我需要映射它們(不能更改字段或重新創建表),如下所示; test.xml;無法將xml提取到sql

<persons> 
<person> 
<name>Al</name> 
<hobby>Golf</hobby> 
<description>been doing this for years</description> 
<age>45</age> 
<latitude>42.7303</latitude> 
<longitude>85.7741<longitude> 
</person> 
</persons> 

tbTest字段是; ID,玩家,經驗,年齡,緯度,經度,等等........ 當我運行這個

LOAD DATA INFILE "test.xml" INTO TABLE tbTest() 

,而不是一個排,我得到16行,每行中的點點滴滴,並其中一個有完整的描述,這是我所需要的。但它應該只是一行,對吧?

然後,當我運行這個代替

LOAD DATA INFILE "test.xml" INTO TABLE listing ROWS IDENTIFIED BY , '<description>'; 

我得到了一排我想,但沒有任何數據。

我也試過

LOAD XML INFILE 'test.xml' INTO TABLE 
tbTest(description,Longitude,Longitude) 
ROWS IDENTIFIED BY '<persons>'; 

然後我試圖將字段添加到tbTest(COL1,COL2,COL3)VALUES(ID = 'COL3',球員= 'COL2' ....)和沒有這個運氣。

預先感謝

回答

1

每個person元件節點表示一個行。其子元素節點表示列。

LOAD XML INFILE 'test.xml' 
INTO TABLE tbTest 
ROWS IDENTIFIED BY 'person'; 
+0

確切地說,所以我的問題是爲什麼列是作爲行產生的?因爲 Al是我表結果中的第一行, 高爾夫是第二行,第三行顯示了一個奇怪的int; 10, 多年來一直這樣做是第四行等等等等。所以這聽起來像是倒退的結果;行而不是列。所以我會發生,如果我能得到與它的描述一行。不是16行 – user3626925

+0

請再次比較我的示例與源代碼,您沒有定義'person'元素,但是有一些無效/未知的元素名稱(使用'<' and '>')。 – ThW

+0

感謝您的幫助,並指出我的錯字。但我認爲這是一個令人頭疼的表,並且不喜歡採取任何數據,當我糾正語句時,它會創建一個空行。唯一有用的說法是: LOAD DATA INFILE'test.xml' INTO TABLE tbTest(description);它提取所有的描述。但它也會產生大量的空行。如果我可以提取其他數據,如高爾夫,那麼值得刪除空行。所以這就是我的位置,並再次感謝您的幫助。 – user3626925