2014-05-12 43 views
3

我有源XML文件結構如下:LOAD XML INFILE和子列

<prices> 
    <price> 
     <code>AD1450.150.1</code> 
     <startdate>2011-10-15</startdate> 
     <enddate>2011-11-25</enddate> 
     <rentalprice>1691.00 </rentalprice> 
     <minrentalprice>860.00 </minrentalprice> 
     <maxrentalprice>1217.00 </maxrentalprice> 
     <services> 
      <service> 
      <code>BG</code> 
      <serviceprice>40.0</serviceprice> 
      <textcode>1293</textcode > 
      </service> 
     </services> 
    </price> 
    <price> 
    ... 
... 

和目標的MySQL表爲:

CREATE TABLE `price` (
    `code` VARCHAR(18) NOT NULL, 
    `startdate` DATE NOT NULL, 
    `enddate` DATE NOT NULL, 
    `rentalprice` FLOAT(9,3) NULL DEFAULT NULL 
) 
COLLATE='utf8_general_ci' 
ENGINE=MyISAM; 

和插入數據:

code  |startdate |enddate |rentalprice |... 
AD1700.100.1|2014-05-03 |2014-11-28 |    | 
AD1700.100.2|2014-05-03 |2014-11-28 |    | 
BG   |2011-10-15 |2011-11-25 |    | 

我的問題是價格記錄中的列'代碼'。 Db忽略孩子,但價格\服務\代碼取代價格\代碼,但我只使用價格*魔杖只有沒有孩子。源XML無法編輯。代碼「BG」不好,因爲價格\代碼不是價格\服務[0] \代碼。

它可以設置,以便SQL解析器忽略孩子中的同一列名稱?小費的小費。

測試在10.0.10,MariaDB的-1〜喘鳴登錄

+0

恐怕你將不得不處理你的xml :-( – Leo

回答

0

你可以使用一個簡單的XSLT或shell腳本來重命名/刪除元素code那就是向前忽略,管結果到數據庫。

+0

好主意,我寧願處理所有指示sql服務器,如果可能的話......但它似乎是不可能的。 – pavex

+0

@pavex :爲什麼它不可能(以及究竟是什麼)? – bourbert

+0

我不想執行預處理,因爲源XML文檔很大(超過200兆字節)我想在MySQL中解決所有問題我擔心處理XML時的性能 – pavex