MySQL LOAD XML耗时太长(系统锁定)

时间:2014-02-21 14:48:23

标签: mysql xml file-io

我的服务器上有4个本地xml文件,我尝试将它们加载到4个Mysql表中,如下所示:

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 

2 个答案:

答案 0 :(得分:0)

我找到的唯一解决方案是使用CSV而不是XML。 CSV工作得很好,甚至比XML快一点。

答案 1 :(得分:0)

您可以尝试将所有item的子元素放入item-tag中。将它们用作属性。

我不知道它为什么会起作用,但绝对有效。