수천 개의 행을 포함하는 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>
은 어떻게 XML 열의 모든 행에 대한 organisationName과 electronicMailAddress을받을 수 있나요? 쿼리가 select 문으로 보이는 것은 무엇입니까? 다음과 같은
LIMIT 1을 추가하여 중첩 된 선택 쿼리를 제한하면 제대로 작동합니다. 그렇지 않으면 쿼리가 실패하게되어 둘 이상의 행이 반환됩니다. 데이터베이스에는 표준화 된 메타 데이터가 포함되어 있으므로 모든 레코드에는 "gmd : contact"라는 필드가 포함되어 있습니다. – stopopol
@stopopol 예, 그렇습니다. 필자는'LATERAL' 서브 쿼리를 사용하여 질의를 다시 작성 했으므로 여러 행에 문제가 없습니다. 모든 행에서 필드를 추출하지 않습니다. – redneb