我继承了一个旧数据库,其中 Excel 数据存储在 Postgres 数据库表的文本列中。该列的值可能如下所示:
<Sheets>
<Sheet1>
<Addresses E54="3" G23="1.1" N87="0"/>
</Sheet1>
<Sheet2>
<Addresses W32="thing"/>
</Sheet2>
</Sheets>
我知道我可以用以下方法找出特定地址的值
select xpath( '//Addresses/@E54', cast(ssd.data as xml)) from spreadsheetdata ssd
但我不知道有多少个不同的地址。
我希望做的是制作如下所示的表格:
sheet address value
Sheet1 E54 "3"
Sheet1 G23 "1.1"
Sheet1 N87 "0"
Sheet2 W32 "thing"
...
我怎么做?
我的解决方案是首先将 xml 转换为 json; xml_to_json
然后我定义:
这可以这样调用
生产
此功能并不像我想要的那样通用,但它足以满足我的数据清理需求
欢迎任何评论。