Pages: 1
- Sujet précédent - pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1 - Sujet suivant
#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
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
En 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
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
En 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
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
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 )
Nicolas
En 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
\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 )
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
En 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 ( n'est pas le bon et qu'une valeur contient ce séparateur: ca décale alors la lecture des données.
En 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
Là, ca veut peut etre dire que le séparateur choisi ( 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 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
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
En 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
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
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 )
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
En ligne
Pages: 1
- Sujet précédent - pb import fichier csv dans bdd postgis via pgadmin : EXIT code 1 - Sujet suivant