我有具有以下结构的源 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/