Vous n'êtes pas identifié(e).
Pages : 1
Bonjour à tous !
Il me faut exécuter un copy to d'un select mais j'ai un problème au niveau de l'utilisateur au moment de la création du fichier.
Je suis logué en gilou et j'exécute :
psql -c "copy (select nm_soc_soc from societaire where id_soc = 100) to '/home/gilou/soc.csv' with delimiter ';'" -h 192.168.1.114 socaf -p 4040 -U gilou
et en retour j'obtiens :
ERREUR: n'a pas pu ouvrir le fichier « /home/gilou/soc.csv » en écriture : Permission non accordée.
Je suis bien dans le dossier /hmoe/gilou pourtant.
Je cherche un peu et j'essaie de donner des droits plus étendus sur le dossier (777 comme çà j'isole les problèmes de droits) et je m'apperçois qu'en fait le fichier
crée en sortie appartient à l'utilisateur postgres.?
Mon pb donc si quelqu'un aurait une piste : comment dois-je procéder pour que le résultat du copy soit associé à l'utilisateur gilou ????
J'ai regardé la doc sur COPY TO /FROM mais pas de mention de user.
Merci par avance.
Hors ligne
La commande copy, exécutée comme cela, demande à PostgreSQL (le processus PostgreSQL qui dialogue avec votre client psql) d'écrire le fichier sur le disque, lui-même. Il n'a évidemment pas le droit, puisqu'il est l'utilisateur système postgres, d'écrire dans votre home. Ce que vous voulez, c'est que ce soit psql qui effectue cette écriture. C'est assez simple, il suffit de remplacer 'COPY' (l'ordre SQL) par \copy (la commande psql), qui va récupérer la sortie d'un ordre COPY et écrire le fichier elle même, donc avec les droits de l'utilisateur exécutant psql.
Essayez donc en remplaçant simplement copy par \copy dans votre commande.
Marc.
Hors ligne
Merci Super,
j'ai essayé et bien évidement çà a marché.
J'avais lu effectivement sur la doc du copy la différence des deux mais je n'avais pas pensé à çà.
Merci beaucoup à vous.
Hors ligne
Pages : 1