#1 Fri 22 January 2021 16:02
- tevrard
- Participant assidu
- Date d'inscription: 23 May 2016
- Messages: 323
Invalid input syntax et Vue
Bonjour,
je rencontre l'erreur suivante lorsque je passe des données dans une vue :
Code:
ERROR : Invalid input syntax for integer : "31/0"
Je suis certain que le fichier n'est pas en cause ( fichiers de sources différentes et fiables qui génèrent cette erreur et import ok quand le trigger faisant appel à la vue en question est désactivé).
Voici la définition de la vue a priori fautive :
Code:
WITH RECURSIVE t(code_depart, code_arrivee, date_eff, nb_boucles) AS (
SELECT sub_dreal_logement.code_commune::character(5) AS code_commune, sub_dreal_logement.code_commune::character(5) AS code_commune, 2006 AS date_eff, 1
FROM bdd_territoires.sub_dreal_logement
UNION
SELECT t.code_depart, r.com_ap, "left"(r.date_eff::text, 4)::integer AS "left", t.nb_boucles + 1
FROM listes_fonctionnelles.ref_mouvements_communes r
JOIN t ON t.code_arrivee = r.com_av
WHERE "left"(r.date_eff::text, 4)::integer > t.date_eff
), tc AS (
SELECT t.code_depart, max(t.nb_boucles) AS nb_boucles
FROM t
GROUP BY t.code_depart
ORDER BY t.code_depart
), table_sortie AS (
SELECT DISTINCT t.code_depart, t.code_arrivee
FROM t
JOIN tc ON t.code_depart = tc.code_depart AND t.nb_boucles = tc.nb_boucles
ORDER BY t.code_arrivee
)
SELECT ts.code_arrivee AS code_commune, t2.lib_commune, t1.nb_permis_construire, t1.nb_permis_amenager, t1.nb_declaration_prealable, t1.nb_permis_demolir, t1.annee_obs, t1.territoire
FROM table_sortie ts
LEFT JOIN bdd_territoires.sub_dreal_logement t1 ON t1.code_commune::bpchar = ts.code_depart
LEFT JOIN listes_fonctionnelles.ref_echelle_geographique t2 ON ts.code_arrivee = t2.code_commune
WHERE t2.code_region = '27'::bpchar;L'objectif de cette vue est de mettre à jour la géographie des données d'une table source (ici sub_dreal_logement (les logements fournis par la dreal)) vers la dernière géographie disponible.
La table de référence pour la dernière géographie disponible est ref_echelle_geographique.
je fais aussi appel a la table ref_mouvements_communes qui retrace l'historique des évolutions communales est issue de l'insee.
Voila je ne comprend comment je génère cette erreur... je vous soumets mon problème en espérant que quelqu'un puisse m'aider ![]()
Hors ligne
#2 Fri 22 January 2021 17:11
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1566
Re: Invalid input syntax et Vue
Bonjour,
Je ne vois qu'un cast vers un int dans votre code: "left"(r.date_eff::text, 4)::integer
Je checkerais la table ref_mouvements_communes pour la colonne date_eff. Elle doit contenir une mauvaise valeur.
Nicolas
Hors ligne
#3 Tue 26 January 2021 10:23
- tevrard
- Participant assidu
- Date d'inscription: 23 May 2016
- Messages: 323
Re: Invalid input syntax et Vue
J'ai un format de date en DD/MM/YY dans le date_eff de la table ref_mouvements_communes
Je suppose que le format YY est ce qui pose problème.
Est ce que qqun dispose d'une routine pour convertir une date DD/MM/YY en DD/MM/YYYY ?
Les années de la table vont de 1944 à 2020
Hors ligne
#4 Tue 26 January 2021 11:22
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1566
Re: Invalid input syntax et Vue
Bonjour,
Regardez du coté de ces fonctions: https://www.postgresql.org/docs/13/func … tting.html
ca permet de faire ce que vous voulez, par ex tester la forme de la date (YY vs YYYY) et appliquer la bon formatage en fonction. Ex:
Code:
select to_date('12/01/2021', 'DD/MM/YYYY');
select to_date('06/11/19', 'DD/MM/YY');Nicolas
Hors ligne
#5 Fri 29 January 2021 15:25
- tevrard
- Participant assidu
- Date d'inscription: 23 May 2016
- Messages: 323
Re: Invalid input syntax et Vue
Merci à Nicolas pour l'aide.
Petit couac avec la solution proposée vu que les années antérieures a 1970 passaient en 20XX au lieu de 19XX (ex données en 2050 au lieu de 1950)
Mais bon ce point la est réglé. Merci !
Hors ligne


