0
我有一個包含數千行的XML列。每行包含元數據文件的xml表示。使用postgres從xml列提取多個值
如何從每一行提取多個xml字段? 我想我需要使用xpath(https://www.postgresql.org/docs/current/static/functions-xml.html),但給出的例子不足以讓我理解它。
讓我們假設有這樣一個表中的「XML」被稱爲「數據」行:
> <gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd"
> xmlns:gco="http://www.isotc211.org/2005/gco"
> xmlns:gml="http://www.opengis.net/gml"
> xmlns:xlink="http://www.w3.org/1999/xlink"
> xmlns:geonet="http://www.fao.org/geonetwork"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://www.isotc211.org/2005/gmd
> something.com/schemas/inspire/gmd/gmd.xsd">
> <gmd:contact>
> <gmd:CI_ResponsibleParty>
> <gmd:organisationName>
> <gco:CharacterString>Something</gco:CharacterString>
> </gmd:organisationName>
> <gmd:contactInfo>
> <gmd:CI_Contact>
> <gmd:address>
> <gmd:CI_Address>
> <gmd:electronicMailAddress>
> <gco:CharacterString>[email protected]</gco:CharacterString>
> </gmd:electronicMailAddress>
> </gmd:CI_Address>
> </gmd:address>
> </gmd:CI_Contact>
> </gmd:contactInfo>
> </gmd:CI_ResponsibleParty>
> </gmd:contact>
如何獲得organisationName和electronicMailAddress在XML列的所有行?查詢看起來像一個select語句是什麼?
如果您通過添加LIMIT 1來限制嵌套選擇查詢,那麼效果很好,否則它會返回多個行,導致查詢失敗。由於數據庫包含標準化的元數據,因此每條記錄都包含一個名爲「gmd:contact」的字段 – stopopol
@stopopol是的,您是對的。我用'LATERAL'子查詢重寫了查詢,以便它對多行沒有問題。它不會從所有行中提取字段。 – redneb