2014-02-21 48 views
2

有我的服務器上4個本地XML文件,我嘗試所有這些加載到4個MySQL表是這樣的:MySQL的LOAD XML花費的時間太長(系統鎖定)

LOAD XML LOCAL INFILE "file1.xml" 
      REPLACE 
      INTO TABLE `table1` 
      CHARACTER SET "utf8" 
      ROWS IDENTIFIED BY "<item>" 

現在到了怪異的一部分。

3個xml文件加載完美,但其中一個xml文件需要永久加載,並且如果我查看過程中它說「系統鎖定」。我想也許它太大了(600MB),但即使將它分成10塊並加載其中的每一塊,結果也幾乎相同。

這裏是有問題的XML:

<item id="48121384"> 
    <name><![CDATA[BRIDGESTONE Blizzak Dm-v1 XL 285/50R20 116R]]></name> 
    <shop_id>2465</shop_id> 
    <category><![CDATA[362195]]></category> 
    <price>30.67</price> 
    <country>uk</country> 
    <product_id>325937</product_id> 
    <product_pid>395</product_pid> 
    <ordering>27</ordering> 
    <img><![CDATA[]]></img> 
    <href><![CDATA[http://blah.com/price/48121384/p1317/xml/?t=1392794884&u=238221047]]></href> 
    <description><![CDATA[]]></description> 
</item> 

,我試圖把它變成(我試過的InnoDB和MyISAM - 同樣的事情)表

field   type  
id    int(11)  
name   varchar(255) 
shop_id  int(11)  
category  int(11)  
price   varchar(30) 
country  varchar(30) 
product_id  int(11) 
product_pid int(11) 
ordering  int(11) 
img   varchar(255) 
href   text 
description text 

回答

0

唯一的解決辦法我發現是使用CSV而不是XML。 CSV工作得很好,甚至比XML快一點。

0

您可以嘗試將所有項目的子元素放入項目標籤中。將它們用作屬性。

我不知道爲什麼它的作品,但它絕對有效。