PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 24/04/2017 13:40:54

databaser
Membre

cellules vides non reconnues par PGS

Bonjour,


Les cellules vides ne sont pas reconnues lors de l'importation (avec un COPY) d'une table.

Si je mets au niveau de la variable ex : UNITE varchar(4) NULL -> alors, il n'y a plus d'erreur.

Mais pourquoi est-ce que PGS ne veut pas reconnaître automatiquement les cases NULL ? D'habitude, il n'y a pas ce problème.

Merci, cdt

Hors ligne

#2 24/04/2017 13:53:50

gleu
Administrateur

Re : cellules vides non reconnues par PGS

Un exemple de script et l'erreur générée seraient une bonne idée pour qu'on puisse reproduire le problème.


Guillaume.

Hors ligne

#3 24/04/2017 14:18:43

databaser
Membre

Re : cellules vides non reconnues par PGS

Création de table :

CREATE TABLE NOMSCHEMA.NOMTABLE (
    (autres variables)
    VOLUME real,
    UNITE varchar(4) NULL
);

COPY NOMSCHEMA.NOMTABLE  FROM 'chemin/MONFICHIER.csv' with delimiter ';'


=> Message :

ERREUR:  syntaxe en entrée invalide pour le type real : «  »
CONTEXT:  COPY dest, ligne 21, colonne volume : «  »

********** Erreur **********

ERREUR: syntaxe en entrée invalide pour le type real : «  »
État SQL :22P02
Contexte : COPY dest, ligne 21, colonne volume : «  »

RQ : suite à la même erreur, j'ai rajouté le NULL à UNITE, et il n'y avait plus d'erreur. Mais ensuite, c'est sur VOLUME l'erreur, d'où ma venue sur le forum.

Dernière modification par databaser (24/04/2017 14:23:54)

Hors ligne

#4 24/04/2017 14:25:05

gleu
Administrateur

Re : cellules vides non reconnues par PGS

Pour pouvoir le reproduire, il faudrait au moins avoir le contenu du fichier chemin/MONFICHIER.csv.

Je suppose néanmoins qu'il n'y a rien dans la colonne en question. Le fichier CSV dont contenir \N pour une valeur nulle.


Guillaume.

Hors ligne

#5 24/04/2017 14:46:19

databaser
Membre

Re : cellules vides non reconnues par PGS

si, il y a plus de valeurs que de NULL.

Je peux vous envoyer un fichier exemple, mais je ne sais pas comment on fait pour le télécharger avec le post ?

Vous verrez qu'il y a deux cellules vides.

/N ? Cela signifie que je mets la lettre "N" dans les cellules ? Je n'ai jamais eu de problème avec des CSV...

Dernière modification par databaser (24/04/2017 14:47:29)

Hors ligne

#6 24/04/2017 15:09:01

gleu
Administrateur

Re : cellules vides non reconnues par PGS

Pas besoin de télécharger le fichier entier. Juste coller ici la ligne qui pose problème. Et en effet, il faut mettre \N dans les cellules sans informations (\, pas /). Si vous n'avez pas eu de problème avant, c'est soit que c'était une colonne texte (et non pas real comme ici, ou int4 ou boolean, etc).


Guillaume.

Hors ligne

#7 24/04/2017 15:15:31

gleu
Administrateur

Re : cellules vides non reconnues par PGS

Dans le fichier que vous venez de m'envoyer, on voit bien que la colonne O ne contient pas d'informations pour les deux dernières lignes (21 et 22). La commande COPY reçoit donc un élément vide et il ne sait pas comment convertir un élément vide en une donnée de type real. Évidemment, il pourrait décider que c'est un NULL mais si la colonne est de type char, varchar ou text, comment pourrait-il faire la différence entre une chaîne vide et une valeur NULL ? donc il prend la valeur qui est donnée. Si c'est un \N, il sait que c'est un NULL. Si ce n'est pas un \N, il prend la valeur telle quelle. Bref, faut mettre des \N quand il s'agit d'un NULL.


Guillaume.

Hors ligne

#8 24/04/2017 15:18:33

databaser
Membre

Re : cellules vides non reconnues par PGS

Je vous ai envoyé le fichier par mail...

J'ai remplacé par \N. Effectivement, il n'y a pas de retour d'erreur.

Voici les lignes : j'ai mis deux colonnes et plusieurs lignes : il y a deux colonnes : la ligne 21 citée dans l'erreur = 1ère colonne et 3ème ligne de mon copier-coller.
(Rq : Il y a aussi d'autres cellules vides dans la colonne 2 : 1ère ligne)
1   
6000    m2
    m3
    t

Merci,

Hors ligne

#9 24/04/2017 15:46:46

databaser
Membre

Re : cellules vides non reconnues par PGS

merci beaucoup pour votre solution.
autre point : ce fichier est vraiment bizarre car à chaque fermeture, il demande "Enregistrer sous" alors qu''il s'agit juste d'enregistrer les modifications et de fermer.

Hors ligne

Pied de page des forums