【问题标题】:MySQL Load XML Using Both Tag names and attribute values as columnsMySQL 使用标记名称和属性值作为列加载 XML
【发布时间】:2017-05-17 13:00:24
【问题描述】:

我在使用 LOAD XML INFILE 将 XML 加载到数据库表中时遇到问题。我的 XML 文件的一个示例是:

<?xml version="1.0" encoding="UTF-8"?>
<ProductList>
  <Product>
    <SKU>ABC123</SKU>
    <Description>The product name</Description>
    <Images>
      <Name>ABC123.JPG</Name>
      <ImagePath Type="Large">path/to/large/ABC123.JPG</ImagePath>
      <ImagePath Type="Small">path/to/small/ABC123.JPG</ImagePath>
    </Images>
  </Product>
</ProductList>

我有一个数据库表定义为:

CREATE TABLE `images` (
  `SKU` varchar(25) NULL,
  `Name` varchar(100) NULL,
  `Large` varchar(100) NULL,
  `Small` varchar(100) NULL,
  KEY `Sku` (`SKU`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8

我正在使用以下查询来加载:

LOAD XML INFILE '/path/to/xml'
INTO TABLE `images`
ROWS IDENTIFIED BY '<Images>';

它正在将 Name 值加载到表中,但未填充 Large 和 Small 字段。在阅读 MySQL 文档时,它看起来可以支持将属性读取为列标题,但它没有指定是否可以在同一行集中同时使用标记名称和属性值作为列名称。

https://dev.mysql.com/doc/refman/5.6/en/load-xml.html

有人可以帮忙吗?是否可以将我拥有的 XML 布局中的图像信息读入单个表中,每条记录一行,填充名称、大小和大小的所有三个字段?

【问题讨论】:

    标签: mysql xml-parsing


    【解决方案1】:

    您的 XML 与 LOAD XML INFILE 可以读取的三种 XML 格式中的任何一种都不匹配。

    您将不得不编写一个脚本来解析您的 XML 输入,读取嵌套标签以找到您想要的三个不同图像的路径,然后构建一个自定义的 INSERT 语句来执行。

    【讨论】:

      猜你喜欢
      • 2012-06-06
      • 2012-01-21
      • 1970-01-01
      • 2018-04-22
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      相关资源
      最近更新 更多