Renommer un champ de métadonnées

Renommer un champ de métadonnées

Les métadonnées décrivant les échantillons sont stockées dans un champ au format JSON. S’il permet une grande souplesse (possibilité de rajouter des champs très facilement), il a également ses propres limites. L’éditeur utilisé dans le logiciel pour modifier les métadonnées va réécrire complètement le contenu du champ JSON. Si celui-ci contenait au préalable un champ inconnu dans le modèle, celui-ci va être perdu. Pour arriver à modifier le nom d’un champ, il faut donc procéder en plusieurs étapes.

Présentation

Les métadonnées décrivant les échantillons sont stockées dans un champ au format JSON. S’il permet une grande souplesse (possibilité de rajouter des champs très facilement), il a également ses propres limites.

L’éditeur utilisé dans le logiciel pour modifier les métadonnées va réécrire complètement le contenu du champ JSON. Si celui-ci contenait au préalable un champ inconnu dans le modèle, celui-ci va être perdu. Pour arriver à modifier le nom d’un champ, il faut donc procéder en plusieurs étapes.

Imaginons que nous souhaitions renommer le champ « espece » en « species ».

Première étape : renommer le champ dans la base de données

Avec un éditeur SQL, nous allons d’abord vérifier l’opération de renommage avant de l’exécuter :

select sample_id, metadata, metadata -> 'espece',
jsonb_insert(metadata::jsonb, '{"species"}'::text[], (metadata->'espece' )::jsonb) - 'espece'
from col.sample
where metadata ->>'espece' is not null;
La requête permet de rajouter un champ « species » dont le contenu est ‘espece’ (jsonb_insert), puis de supprimer le champ ‘espece’ (- ‘espece’).

Pour mettre à jour les données, il suffit de modifier la requête ainsi :

update col.sample
set metadata = jsonb_insert(metadata::jsonb, '{"species"}'::text[], (metadata->'espece' )::jsonb) - 'espece'
where metadata ->> 'espece' is not null;

Seconde étape : modifier le ou les modèles de métadonnées correspondants

Dans le logiciel, modifiez les modèles de métadonnées pour renommer le champ ‘espece’ en ‘species’.

Vous pouvez visualiser rapidement la liste des modèles de métadonnées qui contiennent le libellé concerné :

select metadata_id, metadata_name, metadata_schema
from col.metadata
where metadata_schema::text like '%espece%';

Date de modification : 16 mai 2023 | Date de création : 22 mars 2023 | Rédaction : Éric Quinton