Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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.
Julien.
https://rjuju.github.io/
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
Julien.
https://rjuju.github.io/
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"
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.
Julien.
https://rjuju.github.io/
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.
Julien.
https://rjuju.github.io/
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.
@DanielVerite
http://blog-postgresql.verite.pro/
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)
@DanielVerite
http://blog-postgresql.verite.pro/
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.
@DanielVerite
http://blog-postgresql.verite.pro/
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