#1 Tue 03 January 2012 13:12
- icadedt
- Participant assidu
- Lieu: ici et là
- Date d'inscription: 21 Jul 2006
- Messages: 478
[POSTGRESQL] commande COPY de fichier CSV
Bonjour,
j'essaie d'importer un fichier CSV dans ma base postgresl,
qui est C:\fichier.csv (avec l'onglet nommé "classeur")
j'effectue la requete suivante:
Code:
COPY classeur from 'C:/fichier.csv'
mais j'ai un message d'erreur:
ERREUR: la relation « classeur » n'existe pas
********** Erreur **********
ERREUR: la relation « classeur » n'existe pas
État SQL :42P01
comment faire?
Merci d'avance
Hors ligne
#2 Tue 03 January 2012 16:13
- Christophe Révillion
- Participant actif
- Lieu: Saint Pierre (Réunion)
- Date d'inscription: 3 Aug 2011
- Messages: 123
Re: [POSTGRESQL] commande COPY de fichier CSV
Bonjour,
Si mes souvenirs sont bons tu dois écrire
COPY "nom_du_fichier" FROM 'C: /"nom_du_fichier".csv'
Pour appeler ton csv
Ca fonctionne?
Cordialement
Christophe
Dernière modification par Christophe Révillion (Tue 03 January 2012 16:14)
Hors ligne
#3 Tue 03 January 2012 16:13
- Pierre Vernier
- Participant actif
- Lieu: UK
- Date d'inscription: 15 Jun 2006
- Messages: 116
- Site web
Re: [POSTGRESQL] commande COPY de fichier CSV
Bonjour,
La syntaxe est:
Code:
COPY tablename [ ( column [, ...] ) ] FROM { 'filename' | STDIN } [ [ WITH ] [ BINARY ] [ OIDS ] [ DELIMITER [ AS ] 'delimiter' ] [ NULL [ AS ] 'null string' ] [ CSV [ HEADER ] [ QUOTE [ AS ] 'quote' ] [ ESCAPE [ AS ] 'escape' ] [ FORCE NOT NULL column [, ...] ]
http://www.postgresql.org/docs/8.2/static/sql-copy.html
Donc dans ton code, 'classeur' doit etre une table Postgresql. Or elle n'existe pas. Il faut donc que tu crée une table qui recevra les données de ton fichier lors du 'COPY'.
Pierre
Hors ligne
#4 Tue 03 January 2012 16:16
- bernd
- Juste Inscrit !
- Date d'inscription: 12 Jul 2008
- Messages: 1
Re: [POSTGRESQL] commande COPY de fichier CSV
Bonjour,
"classeur" doit être le nom d'une table dans le schema "public" de la base de données PostgreSQL.
Si vous souhaitez utiliser un autre schema : mon_schema.classeur
Hope it helps
Hors ligne
#5 Tue 03 January 2012 16:18
- Christophe Révillion
- Participant actif
- Lieu: Saint Pierre (Réunion)
- Date d'inscription: 3 Aug 2011
- Messages: 123
Re: [POSTGRESQL] commande COPY de fichier CSV
Ah oui, autant pour moi.
Il faut créer la table au préalable avec une structure similaire au .csv.
Christophe
Hors ligne
#6 Tue 03 January 2012 17:15
- icadedt
- Participant assidu
- Lieu: ici et là
- Date d'inscription: 21 Jul 2006
- Messages: 478
Re: [POSTGRESQL] commande COPY de fichier CSV
Bonjour,
"classeur" doit être le nom d'une table dans le schema "public" de la base de données PostgreSQL.
Si vous souhaitez utiliser un autre schema : mon_schema.classeur
Hope it helps
c'était déjà fait , j'avais oublié de le dire mais ca ne change pas pas de message d'erreur
alors je mets des guillemets :
Code:
COPY "classeur" from 'C:/fichier.csv';
et j'ai ce message d'erreur:
ERREUR: n'a pas pu ouvrir le fichier «C:/fichier.csv » pour une lecture : Permission denied
********** Erreur **********
ERREUR: n'a pas pu ouvrir le fichier « C:/fichier.csv » pour une lecture : Permission denied
État SQL :42501
pourtant je suis avec mon compte postgres qui est celui du super admin
Dernière modification par icadedt (Tue 03 January 2012 17:36)
Hors ligne
#7 Tue 03 January 2012 19:24
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3199
- Site web
Re: [POSTGRESQL] commande COPY de fichier CSV
Bonjour,
Précisez l'OS (ça sent le 7) sous le quel vous tournez.
Vérifiez que vous pouvez ouvrir le fichier avec un éditeur quelconque en étant loguer "postgres".
Vérifiez que votre fichier n'est pas ouvert par une application tierce avant de lancer la commande COPY.
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#8 Wed 04 January 2012 14:26
- Daemons
- Participant occasionnel
- Lieu: Nice
- Date d'inscription: 15 Dec 2011
- Messages: 23
Re: [POSTGRESQL] commande COPY de fichier CSV
Bonjour,
Je crois que c'est une erreur classique avec W7 en effet, ca m'a souvent fait le coup aussi
En fait, comme le super user "postgres" va écrire un fichier dans une répertoire (d'ailleurs, je te conseille de ne pas le mettre directement sur C:, mais mettre un répertoire entre les deux, du style C:/csv/fichier.csv), il faut que l'utilisateur postgres ait les droits d'écriture. Pour ca, si ton OS est W7, tu cliques droit sur le dossier où sera enregistré ton CSV (d'où le fait de ne pas le mettre direct sur C: ), dans les Propriétés > Sécurité, tu ajoutes un nouvel utilisateur postgres (ou le nom de ton super user, si ce n'est pas celui-là) en lui accordant tous les droits.
Je ne sais plus trop quelle est la manip exact, mais c'est bien expliqué ici : http://www.addictivetips.com/windows-ti … ownership/
Dernière modification par Daemons (Wed 04 January 2012 14:38)
Hors ligne
#9 Thu 05 January 2012 08:07
Re: [POSTGRESQL] commande COPY de fichier CSV
Bonjour,
La commande COPY ne crée pas de table dans la base de données, mais ne
fait qu'importer le contenu d'un fichier dans une table déjà existante.
Le CSV ne contient en effet aucune information sur le typage des données
(integer, char, boolean, date, ...) et le SGBD ne peux pas créer un
table avec juste le nom des champs.
il faut donc au préalable créer la structure de la table via une commande
CREATE TABLE pour ensuite y importer le contenu de votre csv via COPY.
Petit conseil, pensez à bien préciser le séparateur des champs et ne pas
importer la 1ère ligne s'il contient le noms des colonnes :
COPY classeur FROM 'C:/fichier.csv' WITH DELIMITER ';' CSV
Doc sur COPY PostGreSQL v.8 : http://docs.postgresql.fr/8.0/sql-copy.html
Doc sur COPY PostGreSQL v.9 : http://docs.postgresql.fr/9.0/sql-copy.html
Cdlt,
David D.
David DELHORBE - Chef de projets SIG
Système d'Information Géographique Départemental (SIGD)
Direction des Études et de l'Évaluation (D2E)
> visitez le Géoportail Seine-Saint-Denis
Hors ligne
#10 Thu 05 January 2012 09:40
- Daemons
- Participant occasionnel
- Lieu: Nice
- Date d'inscription: 15 Dec 2011
- Messages: 23
Re: [POSTGRESQL] commande COPY de fichier CSV
Dans mon message d'hier, remplacer "droits d'écriture" par "droits de lecture", j'avais tout lu à l'envers...
Hors ligne
#11 Thu 22 January 2015 10:01
- Kikouduciel31
- Juste Inscrit !
- Lieu: Saint-Priest
- Date d'inscription: 20 Jun 2014
- Messages: 3
Re: [POSTGRESQL] commande COPY de fichier CSV
Bonjour à tous,
je travaille sous Window 7 64bits; j'ai installé pgadmin III v1.18.1 et postgreSQL v9.3.5
j'utilise NotePad++ pour faire les csv.
je reviens sur ce sujet car si la commande COPY me renvoie cette même erreur citée plus haut:
ERREUR: n'a pas pu ouvrir le fichier « C:\Users\monnom\Documents\dossier\bd\TABLE\corrosion.csv » pour une lecture : Permission denied
État SQL :42501
En passant par importer (clic droit sur la table) ça fonctionne très bien ! je me demande donc où est le problème ? car si c'était une question d'utilisateur, il ne pourrait vraisemblablement pas me faire l'importation, non?
SET CLIENT_ENCODING TO 'utf8';
COPY corrosion FROM 'C:\Users\monnom\Documents\dossier\bd\TABLE\corrosion.csv'
WITH DELIMITER AS ','
NULL AS ''
;
De plus sachant que je vais devoir faire un COPY pour 15 fichiers csv avoir le bon script m'aiderait énormément plutôt que de passer par les menus.
D'avance merci pour vos réponses.
Dernière modification par Kikouduciel31 (Thu 22 January 2015 10:03)
Hors ligne
#12 Tue 03 February 2015 17:24
- Kikouduciel31
- Juste Inscrit !
- Lieu: Saint-Priest
- Date d'inscription: 20 Jun 2014
- Messages: 3
Re: [POSTGRESQL] commande COPY de fichier CSV
Bonjour à tous,
j'ai eu la solution à ce souci...je partage !
C'est bien une question de droit ! en effet en passant par l'interface de PgAdmin (par les menus) on s'affranchit de l'utilisateur "postgre", windows prend le dessus. Or si on passe par la fenêtre de requête, postgre devient l'utilisateur et il faut donc procéder à l'ajout dans windows de cet utilisateur pour tous les dossiers pouvant être appelés dans les requêtes SQL. méthode expliquée dans les précédents messages.
Ca demande donc une certaine réflexion quant à l'organisation des dossiers utilisés pour la BD.
Parfois il faut avoir écrit le problème pour voir la solution évidente !
Bonne continuation !
Hors ligne
#13 Mon 14 March 2016 15:30
- Xavier Julian
- Participant assidu
- Lieu: Orange
- Date d'inscription: 19 Jan 2015
- Messages: 218
Re: [POSTGRESQL] commande COPY de fichier CSV
Bonjour à tous,
je déterre à nouveau le sujet, car j'ai le même problème :
Code:
ERREUR: n'a pas pu ouvrir le fichier « mon_fichier.csv » pour une lecture : Permission denied
J'ai donc essayé de modifier les autorisations d'accès via les propriétés du dossier où se trouve mon fichier .csv, mais j'ai toujours la même erreur.
J'ai également ajouté un nouvel utilisateur windows "postgres" en lui accordant le droit d'accès à ce dossier, même résultat.
Est-ce que quelqu'un pourrait m'expliquer plus en détail la démarche ?
Je me perds un peu dans le lien fourni par Deamons en 2012 en #8
Merci par avance !
Hors ligne