Re: Postgresql : effecteur des update avec un champ XML ?

From: celati Laurent <laurent(dot)celati(at)gmail(dot)com>
To: emmanuel(dot)remy94(at)icloud(dot)com
Cc: pgsql-fr-generale <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: Postgresql : effecteur des update avec un champ XML ?
Date: 2024-12-17 16:44:20
Message-ID: CAHByMH20iSr_SoYv0U6MyVKxSxf99Z4iEOTW9uWaC=9bzL=7sg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Bonjour,
Merci pour votre proposition. Je viens de la tester. Lorsque je tente :
UPDATE public.metadata
SET data = xmlparse(DOCUMENT
REPLACE(
xmlserialize(CONTENT data AS TEXT),
'<gco:CharacterString>WIPSEA</gco:CharacterString>',
'<gco:CharacterString>WIPSEA</gco:CharacterString>'
)
)
WHERE id = 1;

Voici c que j'obtiens :

ERROR: argument of XMLSERIALIZE must be type xml, not type text LINE 4:
xmlserialize(CONTENT data AS TEXT), ^ SQL state: 42804 Character: 96

Pour votre information, ma colonne 'data' de la table metadata qui contient
le contenu en XML
est de type text : [image: image.png]

Le mar. 17 déc. 2024 à 09:03, <emmanuel(dot)remy94(at)icloud(dot)com> a écrit :

> Hello,
>
> Je crois bien que cela nécessite de travailler sur du texte qui sera
> ensuite re-parsé en XML.
>
> Quelque chose comme:
>
> UPDATE public.metadata
> SET data = xmlparse(DOCUMENT
> REPLACE(
> xmlserialize(CONTENT data AS TEXT),
> '<gco:CharacterString>Ancienne Valeur</gco:CharacterString>',
> '<gco:CharacterString>Nouvelle Valeur</gco:CharacterString>'
> )
> )
> WHERE id = 1;
>
> Bonne continuation,
>
> Emmanuel
> CASDEN
>
>
>
> Le 16 déc. 2024 à 22:18, celati Laurent <laurent(dot)celati(at)gmail(dot)com> a
> écrit :
>
> 
>
> Bonjour,
>
> Je travaille avec postgreSQL. J'ai une table avec plusieurs colonnes.
> L'une d'elles (la colonne 'data') est une donnée de type XML. Savez-vous si
> il y aurait un moyen de faire des mises à jour/update sur cette colonne XML
> ? Pour exemple, je colle une requête qui fonctionne permettant d'extraire
> certains éléments de cette colonne XML.
>
> select id, unnest(xpath(
> '//cit:CI_Organisation/cit:name/gco:CharacterString/text()',
> CAST(data AS XML),
> ARRAY[
> ARRAY['cit', 'http://standards.iso.org/iso/19115/-3/cit/2.0'],
> ARRAY['gco', 'http://standards.iso.org/iso/19115/-3/gco/1.0'],
> ARRAY['mdb','http://standards.iso.org/iso/19115/-3/mdb/2.0'],
> ARRAY['cat','http://standards.iso.org/iso/19115/-3/cat/1.0'],
> ])) as orga_name, changedate, createdate, displayorder, doctype, extra, popularity, rating, root, schemaid, title, istemplate, isharvested, harvesturi,
> harvestuuid, groupowner, metadata.owner, metadata.source, uuidfrom public.metadata
>
> Existerai-t-il un moyen d’effectuer une mise à jour/update sur ce champ
> XML ?
>
> Un grand merci.
>
>

In response to

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Yves Jacolin 2024-12-19 08:11:28 Re: Postgresql : effecteur des update avec un champ XML ?
Previous Message Guillaume Lelarge 2024-12-17 08:38:31 Re: Postgresql : effecteur des update avec un champ XML ?