如何使用雪花中的parse_xml忽略损坏的xml行

问题描述

函数parse_xml失败,并显示消息解析XML错误:不是XML元素,位置1 ,这是由于一个无效的xml条目引起的,还是可以忽略该无效的xml条目并继续。

这是背景 我通过其余服务将xml数据存储到雪花表中,该服务存储为varchar,进一步选择此数据,解析为xml并进行过滤/处理。函数parse_xml在我们的情况下效果很好,但是如果任何一项无效,它就会放弃。

这是下面的示例查询,我希望忽略“红色”并返回“绿色”,而不是抛出错误。

SELECT parse_xml(XML)
FROM
  (SELECT ('<color>green</color>') XML
   UNION SELECT ('red') XML);

解决方法

使用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>

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...