mysql - 加载 XML INFILE 和子列

标签 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 忽略 child ,但 price\services\code 替换 price\code ,但我想只在没有 child 的情况下使用 price* 。无法编辑源 XML。代码“BG”是错误的,因为它不是价格\代码而是价格\服务[0]\代码。

可以设置让SQL解析器忽略childs中相同的列名吗?谢谢小费。

在 10.0.10-MariaDB-1~wheezy-log 上测试

最佳答案

您可以使用简单的 XSLT 或 shell 脚本重命名/删除要忽略的元素 code 并将结果通过管道传送到数据库。

关于mysql - 加载 XML INFILE 和子列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23605678/

相关文章:

java - 自定义适配器不在 ListView 中显示文本

load - Sencha Touch 2.2.0 加载速度非常慢。正常吗?

android - Eclipse 加载单独的 Activity 而不是应用程序

javascript - 如何在页面加载后更改内容(JS)?

mysql - CakePHP 创建表后找不到表

php - 'xmlParseEntityRef : no name' warnings while loading xml into a php file

php - 需要帮助将 SQL 查询转换为 Laravel eloquent

android - 移动和消失的代码行; Eclipse 的 XML 编辑器的问题

java - Hibernate 在插入/更新 blob 时使用两倍文件大小的查询

php - 这对 "spam"和 "automation bots"安全吗?