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

Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !

10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …

Faire un don 

Retrouver nos membres bienfaiteurs

#1 Mon 19 April 2021 10:18

Lison94
Participant actif
Date d'inscription: 1 Apr 2020
Messages: 124

pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

Bonjour à tous,

Je souhaite importer dans ma BDD postgis, un tableau Excel. Pour cela je l'ai enregistré en csv dans un fichier où j'ai ouvert les autorisation à "Tout le monde". Ensuite, via pgadmin, j'ai créé une nouvelle table et j'utilise l'outil import csv.
Seulement cela ne fonctionne pas j'obtiens un exit code 1 et je ne comprends pas pourquoi..
Auriez-vous des explications à mon problème ?

Merci par avance smile

Lison

Hors ligne

 

#2 Mon 19 April 2021 10:37

Lison94
Participant actif
Date d'inscription: 1 Apr 2020
Messages: 124

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

Si je tape :
copy "2_risques_environnement_et_energie".nrj_potentiel_solaire_cnr_ccrc
from 'xxx.csv'
DELIMITER ';'
CSV HEADER;

J'ai ce retour :
ERROR:  could not open file "xxx.csv" for reading: No such file or directory
HINT:  COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \copy.
SQL state: 58P01

Hors ligne

 

#3 Mon 19 April 2021 10:40

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

Bonjour,

Le problème de le faire avec pgAdmin est que vous n'avez pas le message d'erreur renvoyé par postgres, mais juste le message pgAdmin "erreur exit 1".

Il est plus simple de le faire avec psql directement, au moins les messages d'erreurs sont clairs et vous savez ce que pose pb.

Quelques éléments sur COPY:
• il faut lancer la commande en tant que superuser
• Si vous lancez COPY .... from ..., il faut que le fichier en question soit SUR LE SERVEUR postgres, pas sur le client.
• Si le fichier est sur votre machine et que le serveur est sur une autre machine, il faut utiliser la commande \COPY, depuis le client PSQL Ou alors copier le fichier depuis votre machine sur le serveur, dans un répertoire accessible par l'utilisateur postgres, puis lancer la commande COPY en mettant le chemin complet de ce fichier sur le serveur.

Nicolas

Hors ligne

 

#4 Mon 19 April 2021 10:42

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

Lison94 a écrit:

Si je tape :
copy "2_risques_environnement_et_energie".nrj_potentiel_solaire_cnr_ccrc
from 'xxx.csv'
DELIMITER ';'
CSV HEADER;

J'ai ce retour :
ERROR:  could not open file "xxx.csv" for reading: No such file or directory
HINT:  COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \copy.
SQL state: 58P01


Il faut mettre le chemin complet du fichier xxx.csv, sinon postgres ne sait pas ou le trouver.
Et le message vous dit bien que le serveur postgres cherche le fichier sur localement sur la machine serveur, pas sur la machine cliente.

Nico

Hors ligne

 

#5 Mon 19 April 2021 10:52

Lison94
Participant actif
Date d'inscription: 1 Apr 2020
Messages: 124

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

Nicolas Ribot a écrit:
Lison94 a écrit:

Si je tape :
copy "2_risques_environnement_et_energie".nrj_potentiel_solaire_cnr_ccrc
from 'xxx.csv'
DELIMITER ';'
CSV HEADER;

J'ai ce retour :
ERROR:  could not open file "xxx.csv" for reading: No such file or directory
HINT:  COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \copy.
SQL state: 58P01


Il faut mettre le chemin complet du fichier xxx.csv, sinon postgres ne sait pas ou le trouver.
Et le message vous dit bien que le serveur postgres cherche le fichier sur localement sur la machine serveur, pas sur la machine cliente.

Nico


Merci pour votre réponse smile
Oui j'ai mis le chemin complet, je l'ai pas noté ici pour des raisons de sécurité.
Lorsque je tape :
\COPY "2_risques_environnement_et_energie".nrj_potentiel_solaire_cnr_ccrc
from 'C:\Users\llesieur\Desktop\export\VS - Potentiel solaire CRUSSOL - MAJ.csv'
DELIMITER ';'
CSV HEADER;

Il ne reconnait pas la cmd \copy..

Hors ligne

 

#6 Mon 19 April 2021 11:02

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

\COPY est une commande propre au client PSQL.

Vous devez surement l'avoir installé si vous avez une BD postgresql locale, sinon peut etre pgAdmin livre un client psql (sinon le plus simple est d'installer une instance PG sur votre machine pour avoir le client. ca permet également de faire des tests postgres sans toucher au serveur wink )

Nicolas

Hors ligne

 

#7 Mon 19 April 2021 11:24

Lison94
Participant actif
Date d'inscription: 1 Apr 2020
Messages: 124

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

Nicolas Ribot a écrit:

\COPY est une commande propre au client PSQL.

Vous devez surement l'avoir installé si vous avez une BD postgresql locale, sinon peut etre pgAdmin livre un client psql (sinon le plus simple est d'installer une instance PG sur votre machine pour avoir le client. ca permet également de faire des tests postgres sans toucher au serveur wink )

Nicolas


ok j'ai utilisé une pg 13.
Voila le résultat obtenu suite à la commande passée (je mets des x pour les données confidentiels) :

ERREUR:  données supplémentaires après la dernière colonne attendue
CONTEXTE : COPY test, ligne 2 : « xxx;Cre;MAD;0,40;4 tennis;4 r roland garros;44.xxx , 4.xxx»

Hors ligne

 

#8 Mon 19 April 2021 11:49

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

cela indique que le CSV contient plus de colonnes que la table de destination.
il faut checker ces colonnes csv et faire en sorte que la table ait les mêmes colonnes, ou alors préciser les colonnes de la table dans la commande copy
copy TABLE (col1, col2, ...) from '....';

Nicolas

Hors ligne

 

#9 Mon 19 April 2021 12:37

Lison94
Participant actif
Date d'inscription: 1 Apr 2020
Messages: 124

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

Ok j'ai bien mis le même nombre de champs que de colonnes. Maintenant j'ai une autre erreur :   données manquantes pour la colonne « Type ». Pourtant toutes les cellules sont remplies.

Hors ligne

 

#10 Mon 19 April 2021 12:57

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

Là, ca veut peut etre dire que le séparateur choisi (wink n'est pas le bon et qu'une valeur contient ce séparateur: ca décale alors la lecture des données.

Hors ligne

 

#11 Mon 19 April 2021 13:56

Lison94
Participant actif
Date d'inscription: 1 Apr 2020
Messages: 124

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

Nicolas Ribot a écrit:

Là, ca veut peut etre dire que le séparateur choisi (wink n'est pas le bon et qu'une valeur contient ce séparateur: ca décale alors la lecture des données.


Super ca fonctionne merci ! Maintenant je n'ai pas de client sql pour ce serveur (lizmap), comment je peux me connecter via l'invite de commande ?

Hors ligne

 

#12 Mon 19 April 2021 14:03

Lison94
Participant actif
Date d'inscription: 1 Apr 2020
Messages: 124

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

C'est bon j'ai réussi j'ai trouvé le SQL SHELL merci beaucoup Nicolas !!

Hors ligne

 

#13 Wed 07 July 2021 11:51

Lison94
Participant actif
Date d'inscription: 1 Apr 2020
Messages: 124

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

Bonjour smile je me permets de revenir sur la question car je me demande : est il possible d'intégrer un fichier csv dans une base postgis, sans avoir à créer tous les champ avant ?

Merci smile

Lison

Hors ligne

 

#14 Wed 07 July 2021 13:47

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

Bonjour,

Oui, il y a des outils qui font ça, si le CSV contient un header listant les colonnes.
(GDAL/OGR: https://gdal.org/drivers/vector/csv.html#vector-csv, datagrip, surement DBeaver)

Nicolas

Hors ligne

 

#15 Wed 07 July 2021 16:24

Lison94
Participant actif
Date d'inscription: 1 Apr 2020
Messages: 124

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

Bonjour,

C'est parfait j'ai utilisé cette formule : https://gist.github.com/chriswhong/067c … 7d1e4da00b

merci smile

Lison

Hors ligne

 

#16 Wed 13 September 2023 18:54

antosansh
Juste Inscrit !
Date d'inscription: 31 Jan 2013
Messages: 3

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

Lison94 a écrit:
Nicolas Ribot a écrit:

\COPY est une commande propre au client PSQL.

Vous devez surement l'avoir installé si vous avez une BD postgresql locale, sinon peut etre pgAdmin livre un client psql (sinon le plus simple est d'installer une instance PG sur votre machine pour avoir le client. ca permet également de faire des tests postgres sans toucher au serveur wink )

Nicolas


ok j'ai utilisé une pg 13.
Voila le résultat obtenu suite à la commande passée (je mets des x pour les données confidentiels) :

ERREUR:  données supplémentaires après la dernière colonne attendue
CONTEXTE : COPY test, ligne 2 : « xxx;Cre;MAD;0,40;4 tennis;4 r roland garros;44.xxx , 4.xxx»


Bonjour

Je n'ai aucune formation en base de données. J'ai appris ça sur le tas. Je m'en sortais assez bien puis, n'ayant plus besoin d'en gérer, je n'en ai plus fait pendant 6 ans.

A présent, je m'y replonge. J'ai ressorti mes vieux fichiers, j'ai réinstallé pgAdmin 4. Et... surprise! Ca ne fonctionne plus comme avant!

Je me retrouve coincé exactement comme mentionné précédement mais je ne comprends pas du tout l'explication. Est-ce que quelqu'un pourrait me traduire?

Avant, j'importais mon fichier csv depuis mon ordinateur sans soucis. Là si je comprends bien, je dois passer par un serveur??!

Hors ligne

 

#17 Wed 20 September 2023 13:43

Mathieu Denat
Participant actif
Lieu: Montpellier
Date d'inscription: 5 May 2010
Messages: 110

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

Bonjour,
PgAdmin est un client graphique.
Le client dont parle Nicolas est installé sur le serveur (mais il peut aussi être installé sur le poste utilisateur).
Il est normalement installé par défaut avec l'installation du serveur posgreSQL.
Voir ici:
https://docs.postgresql.fr/current/app-psql.html
C'est depuis cette application qu'il faut lancer la commande \COPY.
Le CSV doit être sur le même serveur que celui où postgreSQL est installé.
Sinon la commande COPY ne trouvera pas le fichier.


Mathieu
C'est en forgeant qu'on devient forgeron

Hors ligne

 

#18 Sat 23 September 2023 11:22

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1

Bonjour,

Une précision en plus du message de Mathieu:
Lisez bien le message d'erreur, il donne souvent de bonnes indications concernant le problème:

ERREUR:  données supplémentaires après la dernière colonne attendue
CONTEXTE : COPY test, ligne 2 : « xxx;Cre;MAD;0,40;4 tennis;4 r roland garros;44.xxx , 4.xxx»

• L'erreur survient ligne 2, juste après le header (je suppose que votre csv a un header) et concerne la ligne entière.
• "données supplémentaires après la dernière colonne attendue": et les données supplémentaires sont en fait une ligne complète: ca sent le problème de séparateur lors de la commande copy: votre fichier est séparé par des ";" et pas des "," comme par défaut dans les CSV.

Il faut préciser le delimiter dans la commande copy:

Code:

copy matable from 'toto.csv' with (header true, format csv, delimiter ';');

Nicolas

Hors ligne

 

Pied de page des forums

Powered by FluxBB