【发布时间】:2020-05-19 11:37:32
【问题描述】:
我正在尝试使用视图从位于配置单元表的单个列中的大型 XML 字符串中提取字符串(值)。我需要为 COMPANY_ID、SALE_IND 和 CLOSING_IND 获取关联的 FOO_STRING_VALUE。
<Message>
<Header>
<FOO_STRING>
<FOO_STRING_NAME>COMPANY_ID</FOO_STRING_NAME>
<FOO_STRING_VALUE>44-1235</FOO_STRING_VALUE>
</FOO_STRING>
<FOO_STRING>
<FOO_STRING_NAME>SALE_IND</FOO_STRING_NAME>
<FOO_STRING_VALUE>Y</FOO_STRING_VALUE>
</FOO_STRING>
<FOO_STRING>
<FOO_STRING_NAME>CLOSING_IND</FOO_STRING_NAME>
<FOO_STRING_VALUE>Y</FOO_STRING_VALUE>
</FOO_STRING>
</Header>
</Message>
XML 文件最多可以有 50 个“FOO_STRINGS”,并且无法保证它们的顺序,所以我不能使用 XPATH,除非我对每个名称/值对有 50 个 xpath_string 调用并稍后匹配它们。我正在使用这样的 xpath .....
xpath_string(xml_txt, '/Message/Header/FOO_STRING[1]/FOO_STRING_VALUE') AS String_Val_1
xpath_string(xml_txt, '/Message/Header/FOO_STRING[2]/FOO_STRING_VALUE') AS String_Val_2
xpath_string(xml_txt, '/Message/Header/FOO_STRING[3]/FOO_STRING_VALUE') AS String_Val_3
但是,如果订单发生变化,它就不起作用。我想知道是否有一种快速的方法可以找到所需的FOO_STRING_NAME 并使用regexp_extract() 或其他方式获取相应的值?我不熟悉正则表达式,所以任何帮助或建议都会有所帮助,非常感谢
【问题讨论】:
标签: sql regex xpath hive xml-parsing