首页 > 解决方案 > 使用 Snowflake 和 XMLGET 解析 XML 文件

问题描述

我正在尝试解析这个 xml 代码片段。我正在使用雪花数据库尝试创建表。使用 XMLGET 函数,我在所有字段中都得到空返回。我对如何获取标签的属性有点困惑,我以前做过一些事情并且已经得到了一个对象的值,但是属性中的值没有

<Msg_file>
  <Game Number="2020000001">
    <Msg_game_info>
      <Game_info Game_id="2020000001" Game_date="11/01/2020" Game_time="06:00 PM" />
    </Msg_game_info>M
  </Game>
</Msg_file>

标签: xmlparsingsnowflake-cloud-data-platform

解决方案


它有效,但实际上并不像您想象的那么简单。这是一个例子:

create or replace table xmltest(x variant);
insert into xmltest SELECT PARSE_XML(column1) as X FROM VALUES ('<Msg_file><Game Number="2020000001"><Msg_game_info><Game_info Game_id="2020000001" Game_date="11/01/2020" Game_time="06:00 PM"></Game_info></Msg_game_info></Game></Msg_file>');

以下将起作用:

select XMLGET(X, 'Game'):"@Number" AS game FROM xmltest; --return 2020000001
select XMLGET(VALUE, 'Game_info'):"@Game_date" AS game FROM xmltest, LATERAL FLATTEN( INPUT => X:"$" ) LIMIT 1; --returns "11/01/2020"

要更好地理解 XML 解析是如何完成的,请阅读以下文章


推荐阅读