2011-06-17 79 views
0

一個XML文件中的數據我有一個XML文件,我想存儲它DB.How內容我的XML的格式不固定的100% 我有xml文件如下圖所示存儲在DB

<Jb> 
    <T1>false</T1> 
    <T2> 
     <email>[email protected]</email> 
     <userName>passwd</clusterName> 
     <passwd>adobe</clusterURL> 
     <url>dummy</url> 
     <param1>val </paramY> 
      <paramN> val </paramN> 

    </t2> 

    <fx> 
     <a >351108</a> 
     <b >4629 <b> 
    </fx > 
    </Jb> 

我可以有N個參數例如param1,param2等(N不固定)我怎樣才能將它映射到relatioanl表結構? 任何其他方法?

回答

2

這是一對多的關係。你會希望有一個表像這樣:

account 
    id 
    email 
    usernmae 

parameters 
    account_id 
    param_key 
    param_value 

然後您的SQL看起來大致是:

select * from account, parameters where account.id = parameters.account_id 

或者,您可以使用單個列所有的鍵值對存儲爲好。你可以做一個長字符串或clob(取決於你認爲更合適的性能和你的需求是在大小方面)

(所以會有額外的解析必要,但如果你'不想通過SQL選擇參數,這是要走的路)

0

通常,XML內容存儲在數據庫中的單個TEXTVARCHAR列中。

由於其自由形式的結構,它通常不適合O/R映射。

0

一種選擇是直接將XML插入到表中,然後使用XPath命令來提取查詢中的字段。主要數據庫支持XPath:MySQL,Oracle,Postgres ...

0

Oracle擁有XMLDB,它們實現了基於XML進行搜索的XPath函數。這意味着您可以將列定義爲XMLType數據類型,並將模式附加/映射到此(這有助於驗證以及隨着時間的推移發展XML)。

XML在MySQL: http://dev.mysql.com/tech-resources/articles/xml-in-mysql5.1-6.0.html

的MySQL似乎支持XPath函數如前面提到的: http://dev.mysql.com/doc/refman/5.6/en/xml-functions.html

但請注意,這些功能仍在於MySQL開發。