【问题标题】:XML LOAD DATA INFILE childnode value overrides parent nodes valueXML LOAD DATA INFILE 子节点值覆盖父节点值
【发布时间】:2021-04-19 22:16:23
【问题描述】:

我想在 XML 中获取父子节点的值,但是子节点的值会覆盖它,因为它们同名

如何让它选择父节点值而不覆盖它的子节点值?

我正在使用 LOAD XML LOCAL INFILE

LOAD XML LOCAL INFILE 'person.xml'
INTO TABLE document
ROWS IDENTIFIED BY '<document>';

这是示例 XML 数据

<document>
      <name>John</name>
      <age>19</age>
      <street>
                <name>Johnson Street</name>
      </street>
</document>

而不是文件标签下的姓名标签来打印约翰,而是打印约翰逊街

【问题讨论】:

  • 将第二个重命名为全名,不要为不同的层次结构部分使用重复的名称
  • 有没有办法以编程方式重命名它而不影响其他人?我认为该文件是一个将近 40Mb 的大文件。
  • 看看生成xml的程序是否可以更改,否则如果你有成千上万的xml文件,你必须编写一个简单的程序

标签: mysql xml database load-data-infile


【解决方案1】:

使用 xpath 应该是可行的:

SET @xml = '<document>
      <name>John</name>
      <age>19</age>
      <street>
                <name>Johnson Street</name>
      </street>
</document>
';
SET @i =1;
SELECT @i, ExtractValue(@xml, './/street/name');

You can try it here.

【讨论】:

  • 糟糕的设计就是糟糕的设计
  • @nbk 确实如此!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多