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

Printemps des cartes 2024

#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: 121

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: 121

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

bernd a écrit:

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: 3168
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 smile

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

David.D
Chef de projet SIG & Géoportail93
Lieu: Paris
Date d'inscription: 2 Nov 2005
Messages: 65
Site web

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... wink

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

 

Pied de page des forums

Powered by FluxBB