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 25/03/2020 10:17:26

LECARROU
Membre

\copy : erreur "Aucun fichier ou dossier de ce type"

Bonjour,

Je travaille sous windows et me connecte à ma base postgresql via ssh
Je souhaite copier une table dans un fichier csv sur mon poste local

j'utilise donc la commande ci-dessous prévue (\copy permet cela si j'ai bien compris la doc : remote to local):
\copy (SELECT * FROM maTable) TO 'D:/Users/chemin/export.sql' DELIMITER ',' CSV;

mais j'obtiens une erreur sur mon chemin alors même que celui-ci est bon : "Aucun fichier ou dossier de ce type"


d'avance merci pour votre aide

Hors ligne

#2 25/03/2020 10:22:54

rjuju
Administrateur

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

Le "local" dans "remote to local" signifie où psql est lancé.  psql est-il lancé sur votre poste windows ou depuis la session ssh?  Dans le second cas l'erreur me parait tout à fait normale.

Hors ligne

#3 25/03/2020 10:35:16

LECARROU
Membre

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

bonjour,
depuis la session ssh
dans ce cas, comment puis-je copier les données d'une table via ssh sur mon poste local ?

Hors ligne

#4 25/03/2020 10:38:02

rjuju
Administrateur

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

2 possibilités:

- faire un \copy TO './monfichier' puis récupérer le fichier localement (scp ou autre)
- utiliser psql localement, en supposant que vous pouvez (et voulez) autoriser la connexion depuis votre poste

Hors ligne

#5 25/03/2020 10:46:05

LECARROU
Membre

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

\copy (SELECT * FROM maTable) TO './export.sql' DELIMITER ',' CSV;

Permission non accordée

Hors ligne

#6 25/03/2020 11:09:43

pifor
Membre

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

Est-ce que que le compte Linux qui lance psql a bien le droit d'écrire dans le répertoire courant ? Si c'est le cas ça doit fonctionner pour avoir le fichier sur Linux.


Pierre

Hors ligne

#7 25/03/2020 11:11:09

LECARROU
Membre

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

je vais regarder
c'est le compte postgres par defaut

Hors ligne

#8 25/03/2020 11:13:15

pifor
Membre

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

Si vous avez de la place dans /tmp vous pouvez aussi essayer:

\copy (SELECT * FROM maTable) TO '/tmp/export.sql' DELIMITER ',' CSV;

Pierre

Hors ligne

#9 25/03/2020 11:14:29

rjuju
Administrateur

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

pifor a écrit :

Si vous avez de la place dans /tmp vous pouvez aussi essayer:

\copy (SELECT * FROM maTable) TO '/tmp/export.sql' DELIMITER ',' CSV;

C'est malheureusement une mauvaise idée depuis que systemd est passé par là.  Le fichier sera probablement supprimé de manière aléatoire, ou d'autres restrictions peuvent s'appliquer.

Hors ligne

#10 25/03/2020 11:44:37

pifor
Membre

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

Oui le fichier peut être supprimé selon les règles définies (pour CentOS 7) dans:

       /etc/tmpfiles.d/*.conf
       /run/tmpfiles.d/*.conf
       /usr/lib/tmpfiles.d/*.conf

Cela ne doit pas donc être aléatoire (même s'il y a beaucoup de règles) et ne doit pas empêcher d'utiliser /tmp pour stocker un fichier temporaire avant de le transférer sur une autre machine.


Pierre

Hors ligne

#11 25/03/2020 11:50:47

rjuju
Administrateur

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

Je ne suis pas d'accord, vous avez au minimum à vous méfier de PrivateTmp (https://www.freedesktop.org/software/sy … .exec.html).  J'imagine que les nouvelles versions de systemd et de l'intégration dans les systèmes d'exploitation apporte rtégulièrement son lot de nouvelles façons d'empêcher l'utilisation de /tmp.

Hors ligne

#12 17/07/2020 11:31:01

LECARROU
Membre

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

je reviens déterrer ce post car je n'ai toujours pas réussi


j'ai une base de données mabase et un utilisateur monutilisateur que j'ai "granté" sur cette base

je vais reprendre ce que je fais :

1. je me connecte via Putty au serveur distant
2. je lance psql : sudo -u postgres psql (j'ai essayé de me connecter avec monutilisateur mais j'obtiens le message d'erreur suivant : sudo : utilisateur inconnu : monutilisateur et sudo : impossible d'intialiser le greffon de règles)
3. je me connecte à ma base : \c mabase
4. je lance la commande \copy matable TO '/home/path/to/my/file/file.txt' et j'obtiens le message d'erreur suivant :  '/home/path/to/my/file/file.txt' : Permission non accordée

d'avance merci pour votre aide

Hors ligne

#13 17/07/2020 12:23:59

dverite
Membre

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

4. je lance la commande \copy matable TO '/home/path/to/my/file/file.txt' et j'obtiens le message d'erreur suivant :  '/home/path/to/my/file/file.txt' : Permission non accordée

A la place de '/home/path/to/my/file/file.txt' il faut mettre un chemin où l'utilisateur "postgres" de votre serveur a le droit d'écrire.
Généralement un utilisateur a au moins le droit d'écrire dans son répertoire personnel.
Pour savoir quel est le répertoire personnel de postgres, au lieu de faire sudo -u postgres psql, vous pouvez faire

sudo -u postgres -i

Ce donnera un shell interactif. Puis exécuter

pwd

pour savoir quel est le répertoire courant, ou bien

echo $HOME

qui devrait donner le même résultat.
Ensuite faire

psql

tout seul (sans sudo) et utiliser ce répertoire pour la destination de \copy.

Hors ligne

#14 17/07/2020 14:15:30

LECARROU
Membre

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

merci çà a marché mais je suis un peu perdu

j'ai le fichier dans /var/lib/postgresql/
comment je le transfert sur mon ordi en local ?

Hors ligne

#15 17/07/2020 14:25:48

dverite
Membre

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

Pour transférer le fichier vers un PC windows il faut utiliser un programme de transfert qui fonctionne avec le protocole SSH.

Il y en a pas mal, par exemple: WinSCP ou BitVise qui ont des interfaces graphiques, ou en ligne de commande pscp.exe ou psftp.exe (ceux-là sont téléchargeables sur le même site que putty)

Hors ligne

#16 17/07/2020 14:38:21

LECARROU
Membre

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

ah bon ?
d'après le site https://linuxize.com/post/how-to-use-sc … fer-files/
je devrais pouvoir faire

scp zebra@192.168.80.9:/var/lib/postgresql/crf_ran_export_20200717.txt C:\Users\jl3.PRT-063\Desktop

mais j'obtiens l'erreur :

ssh: Could not resolve hostname c: Temporary failure in name resolution
lost connection

si je fait scp zebra@192.168.80.9:/home/zebra/scripts/crf_ran_export_20200717.txt C:/Users/jl3.PRT-063/Desktop (slash '/' à la place d'antislash '\' dans le chemin) j'obtiens une erreur concernant les droits d'accès :

Permission denied, please try again.

Dernière modification par LECARROU (17/07/2020 14:51:17)

Hors ligne

#17 17/07/2020 15:08:00

dverite
Membre

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

Je pense que vous lancez ce scp sur le serveur, en tant que commande linux à l'intérieur de votre session putty, alors qu'il faut le lancer sur le PC Windows en tant que commande Windows.

Hors ligne

#18 17/07/2020 15:20:28

LECARROU
Membre

Re : \copy : erreur "Aucun fichier ou dossier de ce type"

YES.... je suis stupide, j'avais fais la même l'autre jour... je me mélange trop les pinceaux...

Hors ligne

Pied de page des forums