LOAD XML INFILE和子列

时间:2014-05-12 09:40:44

标签: mysql xml load

我有源XML文件,结构如下:

<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解析器忽略子节点中的相同列名? Tahnks的小费。

在10.0.10-MariaDB-1~wheezy-log

上测试

1 个答案:

答案 0 :(得分:0)

您可以使用简单的XSLT或shell脚本重命名/删除要忽略的元素code,并将结果传递给数据库。