如何在hive中附加xml数据并添加xml版本和编码

z9gpfhce  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(267)

我有一个配置单元查询,它从hdfs中的大量xml数据中提取单个条目的xml数据。

<data>
    <book id="101">
        <sales>
          <date>12-20-2018</date>
          <quantity>25</quantity>
          <inventory>306</inventory>
        </sales>
    </book>
    <book id="102">
        <sales>
        </sales>
    </book>
    <book id="102">
        <sales>
        </sales>
    </book>
</data>

当前查询将xml数据分成多行。有没有一种只提取内部数据的有效方法 <sales>..</sales> 标记并添加xml版本加编码( xml version="1.0" encoding="UTF-8" ). 此数据将存储在单独的配置单元表中。

zvokhttg

zvokhttg1#

假设 xml_data 这张table有没有被抽出来的 <book></book> xml数据和 book_data 是列名。下面的查询与预期完全一致:

--check if sales tag exists in book_data 
--get everything inside sales tag and append 
 select 
 case when instr(book_data,'sales') > 0 
  then concat('<?xml version="1.0" encoding="UTF-8"?><sales>',
                regexp_extract(book_data, '<sales>(.+?)</sales>'),'</sales>') 
 else null end as book_data from xml_data;

相关问题