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 28/09/2010 10:40:37

mystikilla
Membre

Supprimer un fichier dans une procédure stockée

Bonjour,

Je souhaiterais supprimer un fichier de mon linux en passant pas une procédure stockée.
Est-il possible de le faire ? soit en le supprimant directement, soit en appelant un script ??

J'ai cherché sur le net, je ne trouve pas mon bonheur...


Merci d'avance

Hors ligne

#2 28/09/2010 10:54:48

arthurr
Membre

Re : Supprimer un fichier dans une procédure stockée

vous pouvez :
1/ creer une table avec la liste des fichiers a supprimer
2/ lancer de facon reguliere un script (perl, ...) qui va supprimer les fichiers et les lignes de la table

Hors ligne

#3 28/09/2010 10:55:24

Marc Cousin
Membre

Re : Supprimer un fichier dans une procédure stockée

Le langage PLPgSQL ne permet pas de le faire.

Si vous tenez vraiment à faire cela, vous devez passer soit par une procédure en C, soit un langage PL plus avancé comme PLPerl. Attention, pour avoir droit de faire des options fichiers, il faudra l'utiliser en mode 'Untrusted' : http://docs.postgresql.fr/9.0/plperl-trusted.html (donc installer le langage plperlu, et créer une fonction en plperlu, ce que seul un superutilisateur aura le droit de faire).

Par ailleurs, cette procédure s'exécutera en tant qu'utilisateur système postgresql, vérifiez donc que cet utilisateur aura le droit de faire ce que vous voulez.

Dernier point : c'est très dangereux. Vous donnez la possibilité à n'importe quel utilisateur pouvant exécuter cette procédure de supprimer un fichier. Si vous ne la blindez pas au maximum, vous courrez le risque qu'un utilisateur puisse supprimer arbitrairement un fichier sur votre serveur.


Marc.

Hors ligne

#4 28/09/2010 11:53:21

mystikilla
Membre

Re : Supprimer un fichier dans une procédure stockée

Marc Cousin a écrit :

Le langage PLPgSQL ne permet pas de le faire.

Si vous tenez vraiment à faire cela, vous devez passer soit par une procédure en C, soit un langage PL plus avancé comme PLPerl..

Merci pour cette réponse rapide, au moins c'est clair! ;-)
Je vais donc peut être voir pour une procédure en C ou me faire un script a part...

Bonne journée !

Hors ligne

#5 28/09/2010 12:04:55

Marc Cousin
Membre

Re : Supprimer un fichier dans une procédure stockée

La procédure en C a un petit défaut par rapport à la procédure en plperlu : si vous faites une erreur et déclenchez un segfaut, vous crashez le processus postgresql, et vous déclenchez un redémarrage de l'ensemble du cluster (cela tue donc toutes les sessions).


Marc.

Hors ligne

#6 28/09/2010 12:15:28

mystikilla
Membre

Re : Supprimer un fichier dans une procédure stockée

Finalement mon choix est fait alors : script !! cool

Merci

Hors ligne

Pied de page des forums