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 11/01/2015 12:25:28

Swan
Membre

Copy from

Bonjour,

Je débute tout juste sur pgAdmin III 9.3. Mes compétences sont donc très limitées.

Je dois importer un fichier Excel. Suite à mes nombreuses promenades sur le forum, j’ai compris qu’il fallait commencer par enregistrer mon fichier en CSV et enlever les entêtes des colonnes.
J’ai aussi créé ma table dans pgAdmin III. Même nombre de colonnes (3 colonnes) afin de bien faire correspondre les données.

Je voulais utiliser la fonction « Copy from ». Or, cela s’est avéré bien compliqué. Ci-dessous mes différents essais avec les messages d’erreurs :

COPY Test FROM 'D:\TEST\Liste.CSV' with DELIMITER ';'

ERREUR: la relation « test » n'existe pas
État SQL :42P01

J’ai lu sur des forums que l’on pouvait aussi utiliser \copy from (même si j’avoue que je n’ai pas compris la différence entre les deux). J’ai donc tenté avec cette formule :

\copy Test FROM 'D:/TEST/Liste.CSV' with DELIMITER ';'

ERREUR:  erreur de syntaxe sur ou près de « \ »
LINE 1: \copy Test FROM 'D:/TEST/Liste.CSV' with DELIMITER ';'

Je tiens à préciser que j’ai déjà essayé en transformant les \ en /, en mettant une virgule à la place du point virgule après DELIMITER. J’ai essayé d’enregistrer mon fichier CSV dans différentes répertoires (Bureau, C, D) mais aucun ne fonctionne.
J’ai aussi vérifié que j’étais bien connectée à la bonne base, grâce au code suivant : select current_database(). Et je confirme que c’est bien la base dans laquelle se trouve ma table.
Je me suis demandée si j’avais mal installé pgAdmin III. Cependant, il ne semble pas avoir de problème particulier. Dans le menu à gauche, j’ai bien accès aux bases de données.
Est-ce qu’il y a quelque chose à configurer en particulier ?

Toute aide sera la bienvenue ! smile

Je vous remercie par avance,

Bonne journée

Hors ligne

#2 11/01/2015 12:45:05

rjuju
Administrateur

Re : Copy from

Bonjour,

Le message d'erreur "la relation « test » n'existe pas" signifie que soit vous étiez soit la mauvaise base, soit votre table s'appelle vraiment Test et il faut donc prendre en compte la casse en entourant le nom de guillemets double. Si la table test n'existe pas, COPY ne la créera pas.

COPY FROM est interprété par le moteur, et suppose que le fichier est disponible sur le serveur, et que l'utilisateur qui démarre le service y a accès. \copy n'est utilisable que par l'outil psql, et suppose que le fichier est disponible sur le poste client.

Hors ligne

#3 11/01/2015 22:32:36

Swan
Membre

Re : Copy from

Bonjour,

Il manquait en effet les guillemets. Je me sens bête tout à coup.

Merci pour votre aide !

Hors ligne

#4 14/01/2015 18:32:16

m3lanoo
Membre

Re : Copy from

Bonjour, j'ai exactement le même problème.
Le souci c'est que l'ajout de guillemet au nom de la table, ne change pas le résultat de ma requête.

-- Exécution de la requete :
COPY sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:\Users\D43175\Documents\- Mélanie\Dossier cours\sgbd_un.csv' DELIMITER ';' CSV HEADER;
********** Erreur **********


État SQL :58P01

-- Exécution de la requete :
COPY sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/- Mélanie/Dossier cours/sgbd_un.csv' DELIMITER ';' CSV HEADER;
********** Erreur **********


État SQL :58P01


-- Exécution de la requete :
COPY sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:\Users\D43175\Documents\- Mélanie\Dossier cours\sgbd_un.csv' DELIMITER ';' CSV HEADER;
********** Erreur **********


État SQL :58P01

-- Exécution de la requete :
COPY sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:\Users\D43175\Documents\- Mélanie\Dossier cours\sgbd_un.csv' CSV HEADER;
********** Erreur **********


État SQL :58P01

-- Exécution de la requete :
COPY sgbd FROM 'C:\Users\D43175\Documents\- Mélanie\Dossier cours\sgbd_un.csv';
********** Erreur **********


État SQL :58P01

-- Exécution de la requete :
COPY sgbd FROM 'C:\Users\D43175\Documents\PostgreSQL\sgbd_un.csv';
********** Erreur **********


État SQL :42501

-- Exécution de la requete :
COPY sgbd FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv';
********** Erreur **********


État SQL :42501

-- Exécution de la requete :
\COPY sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:\Users\D43175\Documents\- Mélanie\Dossier cours\sgbd_un.csv' CSV HEADER;
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :
\COPY sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:\Users\D43175\Documents\- Mélanie\Dossier cours\sgbd_un.csv' DELIMITER ';' CSV HEADER;
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :
\COPY sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/- Mélanie/Dossier cours/sgbd_un.csv' DELIMITER ';' CSV HEADER;
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :
\COPY sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv' DELIMITER ';' CSV HEADER;
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :
\COPY sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:\Users\D43175\Documents\PostgreSQL\sgbd_un.csv' DELIMITER ';' CSV HEADER;
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :
\copy sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:\Users\D43175\Documents\PostgreSQL\sgbd_un.csv' DELIMITER ';' CSV HEADER;
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :
\copy sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv' DELIMITER ';' CSV HEADER;
********** Erreur **********


État SQL :42601
Caractère : 1


-- Exécution de la requete :
copy sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv' DELIMITER ';' CSV HEADER;
********** Erreur **********


État SQL :42501

-- Exécution de la requete :
COPY sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv' DELIMITER ';' CSV HEADER;
********** Erreur **********


État SQL :42501

-- Exécution de la requete :
\copy sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv';
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :
/copy sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv';
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :
copy sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv';
********** Erreur **********


État SQL :42501

-- Exécution de la requete :
/copy sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv';
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :

\copy sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv';
********** Erreur **********


État SQL :42601
Caractère : 2

-- Exécution de la requete :
\Copy sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv';
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :
\copy sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv';
********** Erreur **********


État SQL :42601
Caractère : 1


-- Exécution de la requete :
\copy sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv';
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :
 \copy sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv';
********** Erreur **********


État SQL :42601
Caractère : 2

-- Exécution de la requete :
\copy sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv';
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :
COPY sgbd ( code, dept, depun, arrivun, varun, arrivdeux, depdeux, vardeux )
    FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv'
    WITH 
          DELIMITER AS ','
          CSV HEADER ;
********** Erreur **********


État SQL :42501

-- Exécution de la requete :
\copy sgbd ( code, dept, depun, arrivun, varun, arrivdeux, depdeux, vardeux )
    FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv'
    WITH 
          DELIMITER AS ','
          CSV HEADER ;
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :
\copy sgbd ( code, dept, depun, arrivun, varun, arrivdeux, depdeux, vardeux )
    FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv'
    WITH 
          DELIMITER AS ';'
          CSV HEADER ;
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :

COPY sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv'; 
********** Erreur **********


État SQL :42501

-- Exécution de la requete :
COPY sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM '/Users/D43175/Documents/PostgreSQL/sgbd_un.csv'; 
********** Erreur **********


État SQL :42501

-- Exécution de la requete :
\copy sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv'; 
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :
\copy sgbd (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM '/Users/D43175/Documents/PostgreSQL/sgbd_un.csv'; 
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :
\copy sgbd FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv';
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :
COPY sgbd FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv';
********** Erreur **********


État SQL :42501

-- Exécution de la requete :
\copy sgbd FROM '/Users/D43175/Documents/PostgreSQL/sgbd_un.csv'; 
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :

COPY sgbd FROM '/Users/D43175/Documents/PostgreSQL/sgbd_un.csv'; 
********** Erreur **********


État SQL :42501

-- Exécution de la requete :
COPY sgbd FROM '/Users/D43175/Documents/PostgreSQL/sgbd_un.csv'; 
********** Erreur **********


État SQL :42501

-- Exécution de la requete :
COPY sgbd FROM '/Users/D43175/Documents/PostgreSQL/sgbd_un.csv'
********** Erreur **********


État SQL :42501

-- Exécution de la requete :
COPY sgbd FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv' with DELIMITER ';';

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


État SQL :42501

-- Exécution de la requete :
/copy sgbd FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv' with DELIMITER ';';
********** Erreur **********


État SQL :42601
Caractère : 1

-- Exécution de la requete :
COPY temps FROM '\Users\D43175\Documents\PostgreSQL\sgbd_un.txt';
********** Erreur **********


État SQL :42P01

-- Exécution de la requete :
COPY sgbd FROM '\Users\D43175\Documents\PostgreSQL\sgbd_un.txt';
********** Erreur **********


État SQL :42501

-- Exécution de la requete :
COPY sgbd FROM 'C:\Users\D43175\Documents\PostgreSQL\sgbd_un.txt';
********** Erreur **********


État SQL :42501

-- Exécution de la requete :
\copy sgbd FROM 'C:\Users\D43175\Documents\PostgreSQL\sgbd_un.txt'; 
********** Erreur **********


État SQL :42601
Caractère : 1


-- Exécution de la requete :
COPY "sgbd" FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv' with DELIMITER ';';

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


État SQL :42501

-- Exécution de la requete :
COPY "sgbd" FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv' with DELIMITER ';';

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


État SQL :42501

-- Exécution de la requete :
COPY "sgbd" FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv';
********** Erreur **********


État SQL :42501

-- Exécution de la requete :
COPY "sgbd" (code, dept, depun, arrivun,varun, arrivdeux, depdeux, vardeux) FROM 'C:/Users/D43175/Documents/PostgreSQL/sgbd_un.csv'; 
********** Erreur **********


État SQL :42501

Désolé  pour le long post mais voici tous ce que j'ai pu tester mais rien y fait cela ne fonctionne pas.

La commande "importer..." avec un clic droit sur le nom de la table ne fonctionne pas non plus.

J'ai l'impression de rater une étape qui m'empêche d'avancer dans mon projet.


Merci d'avance pour votre aide.

Mélanie.

Hors ligne

#5 14/01/2015 18:40:45

gleu
Administrateur

Re : Copy from

Je ne vais pas regarder tous les codes d'erreur, mais déjà deux/trois choses :

\copy ne fonctionne pas avec pgadmin, c'est une méta-commande spécifique de psql

Je ne sais pas pourquoi il ne donne pas le texte de l'erreur mais les codes d'erreur sont expliqués sur http://docs.postgresql.fr/9.4/errcodes-appendix.html . Par exemple, 42501 est pour un problème de droit insuffisant. L'utilisateur de la connexion ne doit pas avoir les droits pour écrire dans cette table. À vous de voir pour les autres.


Guillaume.

Hors ligne

Pied de page des forums