如何在雪花中使用 parse_xml 忽略损坏的 xml 行
Posted
技术标签:
【中文标题】如何在雪花中使用 parse_xml 忽略损坏的 xml 行【英文标题】:How to ignore corrupted xml row with parse_xml in snowflake 【发布时间】:2020-11-09 20:38:05 【问题描述】:函数 parse_xml 失败并显示消息 解析 XML 时出错:不是 XML 元素,位置 1,这是由于一个无效的 xml 条目,无论如何忽略无效的条目并继续。
这是背景 我通过一个存储为 varchar 的 rest 服务将 xml 数据获取到雪花表中,进一步挑选这些数据,解析为 xml 并进行过滤/处理。函数 parse_xml 在我们的例子中运行良好,但如果任何一个条目无效,它就会放弃。
下面是一个示例查询,我希望忽略“红色”并返回“绿色”而不是抛出错误。
SELECT parse_xml(XML)
FROM
(SELECT ('<color>green</color>') XML
UNION SELECT ('red') XML);
【问题讨论】:
【参考方案1】:使用 check_xml()
检查 XML 的有效性:
SELECT parse_xml(XML)
FROM
(SELECT ('<color>green</color>') XML
UNION SELECT ('red') XML)
WHERE check_xml(XML) is NULL ;
这会根据需要返回 <color>green</color>
。
【讨论】:
以上是关于如何在雪花中使用 parse_xml 忽略损坏的 xml 行的主要内容,如果未能解决你的问题,请参考以下文章
apex_web_service.parse_xml 不解析“&”字符