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

Pied de page des forums