Herdei um banco de dados legado no qual os dados do Excel são armazenados em uma coluna de texto de uma tabela em um banco de dados postgres. Um valor dessa coluna pode ser semelhante a:
<Sheets>
<Sheet1>
<Addresses E54="3" G23="1.1" N87="0"/>
</Sheet1>
<Sheet2>
<Addresses W32="thing"/>
</Sheet2>
</Sheets>
Eu sei que posso escolher valores de endereços específicos com
select xpath( '//Addresses/@E54', cast(ssd.data as xml)) from spreadsheetdata ssd
mas não tenho ideia de quantos endereços distintos existem.
O que espero fazer é produzir uma tabela parecida com:
sheet address value
Sheet1 E54 "3"
Sheet1 G23 "1.1"
Sheet1 N87 "0"
Sheet2 W32 "thing"
...
Como faço isso?
Minha solução foi primeiro converter o xml para json; xml_to_json
Então eu defini:
isso pode ser chamado com
para produzir
Esta função não é geral como eu gostaria, mas será suficiente para minhas necessidades de limpeza de dados
Quaisquer comentários são bem-vindos.