2013-06-06 50 views
1

我有一個XML文件:插入XML數據

<root> 
<application> 
    <app-name>Google App</app-name> 
    <group> 
     <group-name>MidasGoogleAppsUsers</group-name> 
     <user> 
      <username>knikkhoo</username> 
      <username>devendrat</username> 
     </user> 
    </group> 
</application> 
<application> 
    <app-name>MySql App</app-name> 
    <group> 
     <group-name>MidasSQLUsers</group-name> 
     <user> 
      <username>knikkhoo</username> 
      <username>devendrat</username> 
     </user> 
    </group> 
</application> 
<application> 
    <app-name>ESNutritio</app-name> 
    <group> 
     <group-name>MidasNutrition</group-name> 
     <user> 
      <username>knikkhoo</username> 
      <username>devendrat</username> 
     </user> 
    </group> 
</application> 
</root> 

我有一個命名爲strucutre TEST_XML中,我已經存儲在該XML表:

Create table test_xml 
(
    ID int, 
    XMLData text 
) 

還有一種表UserAppliaction

create table `test`.`UserApplication`( 
    `ID` int NOT NULL AUTO_INCREMENT , 
    `ApplicationName ` varchar(100) , 
    `GroupName` varchar(100) , 
    `UserName` varchar(100) , 
    PRIMARY KEY (`ID`) 
) 

如何將這些數據存儲到UserApplication表中。 我是Mysql的新手。

+0

任何人都可以幫助我這個請...... –

回答

2

不要嘗試解析SQL中的XML。使用您喜歡的應用程序編程語言來解析那個東西,然後利用SQL查詢,像這樣的插入提取的數據:

INSERT INTO UserApplication 
SET ApplicationName = ?, 
    GroupName = ?, 
    UserName = ? 

在大多數語言綁定,實際上你可以進入的聲明是這樣,包括引號,和然後執行重複傳遞這些佔位符的不同值的語句。圖書館將妥善處理所有數據。通常這種方法被稱爲「準備好的陳述」,因爲陳述的準備和執行是針對不同的步驟的。

+0

只需謹慎一點:像這樣使用'SET'的'INSERT'是MySQL的具體內容,並且不會在*任何其他DBMS上工作。標準語法爲'insert into UserApplication(ApplicationName,GroupName,UserName)values(?,?,?)' –

+0

@a_horse_with_no_name:True。這是我真正喜歡的MySQL語法的一部分,特別是在值更復雜的情況下,我喜歡跟蹤哪一個是哪一個。但我同意在這種情況下,好處可以忽略不計,所以可能沒有理由選擇不可移植的語法,除非與其他不那麼簡單的代碼段保持一致。這是一個優先事項,取決於遷移到另一個DBMS的可能性。 – MvG