Vous n'êtes pas identifié(e).

#1 02/04/2012 22:00:46

philippen
Membre

copy ou \copy

bonsoir
question de base
j'ai un fichier .csv que je veux importer dans une table
dans pgadmin bouton sql je tape
COPY matable FROM /chemin_du_fichier.csv' DELIMITERS ','
réponse je n'ai pas les droits du super utilisateur donc je ne peux pas.
j'ai cru comprendre que si je place fichier.csv sous $pgdata cela se passerait mieux.
Mais sous ubuntu ou se truve ce fichu répertoire pgdata ?

à défaut on me dit que la commande psql \copy fait la même chose sans demander les droits du super utilisateur
je tape donc
\copy matable FROM /chemin_fichier.csv DELIMITER ','
réponse connait pas matable

merci des éclaircissements

Hors ligne

#2 02/04/2012 22:15:57

gleu
Administrateur

Re : copy ou \copy

j'ai cru comprendre que si je place fichier.csv sous $pgdata cela se passerait mieux.

C'est faux.

Mais sous ubuntu ou se truve ce fichu répertoire pgdata ?

En étant connecté à PostgreSQL, lancez "SHOW data_directory".

à défaut on me dit que la commande psql \copy fait la même chose sans demander les droits du super utilisateur

C'est vrai.

réponse connait pas matable

Soit vous avez mal saisi le nom de la table, soit vous n'êtes pas connecté à la bonne base (ou au bon serveur), soit vous n'avez pas donné le vrai message d'erreur. À ce sujet, il serait mieux de donner le message d'erreur exact, ce serait beaucoup plus simple.


Guillaume.

Hors ligne

#3 02/04/2012 22:17:40

rjuju
Administrateur

Re : copy ou \copy

Bonsoir.

Il ne faut pas confondre la commande sql COPY, qui accède à l'arborescence du serveur et la commande \copy qui ne s'utilise que dans psql et qui fonctionne effectivement sur votre arborescence courante.
Pour connaître le répertoire data, vous pouvez faire "show data_directory" et cela vous donnera le chemin d'accès complet.

Hors ligne

#4 03/04/2012 09:55:10

philippen
Membre

Re : copy ou \copy

dans une console je tape
sudo -s -u postgres
on me demande le mot de passe du compte utilisateur sous lequel je suis connecté
ce qui me permet d'arriver à la commande psql
(si je tape sudo -s -u nom_utilisateur_postgresql_créé_pour_gerer_les_bases_ainsi_que_décrit_dans_la_doc_ubuntu la réponse est "sudo user unknown" ce qui est logique puisque mon système n'a pas d'utilisateur utilisateur_postgresql et qu'en conséquence il ne fait pas partie des sudo)

donc
psql
commande
postgres=# \COPY table FROM 'chemin_du_fichier_à_importer' delimiter ','
ERROR: relation "table" n'existe pas
\COPY: ERROR: relation "table" does not exist

Hors ligne

#5 03/04/2012 11:15:05

edlm
Membre

Re : copy ou \copy

Dans quel base êtes vous connecté ?  Sous psql que donne la commande \d ?

Si vous vous êtes connecté sous l'utilisateur postgres probable que vous soyez dans
la base postgres et non dans celle où vous supposez être.


Éric

Hors ligne

#6 03/04/2012 12:09:39

philippen
Membre

Re : copy ou \copy

la commande \d dit
No relations found

ce qui n'est pas étonnant puisque toutes mes bases sont sous l'utilisateur (role ??) que postgres créé lors de l'installation de postgresql (role ?? qui a le droit de créer et modifier des bases de données)
sous mon compte utilisateur philippe si je tape psql mabasededonnées la réponse est
FATAL role philippe n'existe pas

si jen passe en root même réponde
FATAL role root n'existe pas

ce que je comprend
mon nom de compte utilisateur d'ubuntu n'est pas le même que celui du role administrateur de mes bases

Comment contourner cela ?

Hors ligne

#7 03/04/2012 12:15:13

rjuju
Administrateur

Re : copy ou \copy

Vous pouvez lancer en utilisateur postgres "psql mabasededonnées", ou faire "\c mabasededonnées" une fois sous l'invite psql pour changer de base.
Vous pouvez également faire "psql -U postgres mabasededonnées" depuis n'importe quel utilisateur système pour vous connecter en tant que postgres à la bonne base de  données.

Hors ligne

#8 03/04/2012 13:24:04

philippen
Membre

Re : copy ou \copy

merci
mon problème est résolu

Hors ligne

Pied de page des forums