Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 23 October 2020 11:49

Alban NOIR
Participant occasionnel
Date d'inscription: 7 Sep 2005
Messages: 32

Postgres avec héritage des tables et colonne de type serial

Bonjour,

J'ai des tables avec héritage qui pourraient ressembler à ça :

Code:

CREATE TABLE pokemon (
    id serial PRIMARY KEY,
    nom character varying,
    "type" character varying,
    categorie character varying,
    taille double precision,
    poids double precision,
    generation integer
);

CREATE TABLE type_electrik (
    att_electrik1 integer,
    att_electrik2 integer
) INHERITS (pokemon);

CREATE TABLE type_eau (
    att_eau1 integer,
    att_eau2 integer
) INHERITS (pokemon);

Tout fonctionne bien quand je

Code:

INSERT INTO type_eau(nom, "type", categorie, taille, poids, generation,att_eau1, att_eau2)
    VALUES ('Carapuce', 'eau', 'Pokémon Minitortue', 0.5, 9, 1, 42, 64);

J'ai bien un enregistrement dans pokemon.id qui s’incrémente tout seul.

Depuis FME je souhaite insérer des features dans la table postgres type_eau
mais j'ai systématiquement une erreur.

2020-10-23 11:14:18|   1.5|  0.0|ERROR |Bulk copy failed on table 'public.type_eau' using delimiter ':'. Error was 'ERROR:  null value in column "id" violates not-null constraint


Que je définisse dans FME le writer à 'Allow serial column writing' à yes ou no ou que je définisse explicitement le type de la colonne id à serial ou autre chose.

Comment faut il s'y prendre pour écrire dans Postgres sur une table avec héritage ayant une colonne de type serial?

Merci


Alban

Hors ligne

 

#2 Fri 23 October 2020 21:11

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 427

Re: Postgres avec héritage des tables et colonne de type serial

Bonjour,

A voir, il y a peut-être un lien avec le problème décrit dans ce sujet sur le site de safe : https://community.safe.com/s/question/0 … 3479899797

A savoir, FME écrit (écrivait ? le sujet date de 2 ans) des valeurs NULL pour les attributs non précisés dans le writer postgres/postgis.
2 solutions proposée, notamment passer par un SQLExecutor dans lequel est exécuté l'INSERT avec seulement les valeurs à insérer. Ca permet de laisser la base de données gérer les valeurs par défaut pour les autres champs.

Hors ligne

 

#3 Mon 26 October 2020 08:56

Alban NOIR
Participant occasionnel
Date d'inscription: 7 Sep 2005
Messages: 32

Re: Postgres avec héritage des tables et colonne de type serial

Bonjour,
Oui j'avais lu ce billet de la base de connaissance de Safe et effectivement les logs Postgres montrent bien que FME (2020 dans mon cas) envoie des valeurs Null pour les colonnes héritées de type serial.
Je pourrais effectivement faire un SQLExecutor (encore qu'il est difficile de gérer proprement les transactions) mais tant qu'à faire autant passer par des tables pivots et post traiter en SQL.
Merci


Alban

Hors ligne

 

#4 Tue 27 October 2020 21:03

n314
Participant assidu
Date d'inscription: 6 Sep 2005
Messages: 706

Re: Postgres avec héritage des tables et colonne de type serial

J arrive par la bande, attention a ne pas considerer la capacité d heritage de postgre de la meme manière qu en développement objet. Bien verifier les limites de l implémentation d héritage par pg, cf https://www.postgresql.org/docs/current … herit.html. En très court,l héritage c est plutôt pour fractionner/répartir la donnée.

Dernière modification par n314 (Tue 27 October 2020 21:05)

Hors ligne

 

Pied de page des forums

Powered by FluxBB