Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Requêtes
Requêtes Forum d'entraide sur les requêtes SQL spécifiques à PostgreSQL, les triggers, les vues, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/01/2012, 14h58   #1
Invité de passage
 
maycem amor
Inscription : octobre 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : maycem amor

Informations forums :
Inscription : octobre 2010
Messages : 8
Points : 1
Points : 1
Par défaut Insertion d'un exécutable dans une base de donnée PostgreSQL (pas le chemin, l'exécutable lui-même)

Bonjour ,
je suis entrain de chercher une méthode qui me permet d'inserer une fichier .exe dans une table de ma base de donnée .
j'ai deja essayé les Larges Objects il m'insére juste les chemins pas le fichier . (http://www.developpez.net/forums/d18...age-jpg-table/)
ma question est ce que c possible ou pas d'inserer un fichier .exe pas son chemin car aprés je veux bien l'acceder de n'importe quel client ??

très cordialement.
maicem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 15h45   #2
Modérateur
 
Avatar de ymoreau
 
Homme Yoann Moreau
Ingénieur en laboratoire de recherche
Inscription : septembre 2005
Messages : 724
Détails du profil
Informations personnelles :
Nom : Homme Yoann Moreau
Âge : 26
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Ingénieur en laboratoire de recherche
Secteur : Enseignement

Informations forums :
Inscription : septembre 2005
Messages : 724
Points : 1 130
Points : 1 130
Je pense que cela peut poser quelques problèmes. Un exécutable n'est pas forcément portable, donc selon le client qui y accède il ne sera peut être pas utilisable.
Ensuite il faut bien comprendre qu'un exécutable doit être local pour s'exécuter, donc même en le stockant dans la base il faudra le récupérer entièrement chez le client pour pouvoir le lancer. Est-ce qu'il n'y aurait pas de façon de faire plus simple ? Comme une copie de fichier directement.

Sinon pour réaliser il faut copier entièrement le code binaire de l'exécutable dans un champ binaire d'une table. Je pense qu'il faudrait chercher de ce côté là :
http://docs.postgresql.fr/8.4/sql-copy.html (en bas de page : partie Format binaire)
ymoreau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 15h57   #3
Modérateur
 
Inscription : octobre 2008
Messages : 1 508
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 508
Points : 2 040
Points : 2 040
Citation:
Envoyé par maicem Voir le message
ma question est ce que c possible ou pas d'inserer un fichier .exe pas son chemin car aprés je veux bien l'acceder de n'importe quel client ??
Oui c'est possible avec la commande client psql \lo_import ou sur le serveur avec la fonction intégrée lo_import()
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 16h08   #4
Invité de passage
 
maycem amor
Inscription : octobre 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : maycem amor

Informations forums :
Inscription : octobre 2010
Messages : 8
Points : 1
Points : 1
Citation:
Envoyé par estofilo Voir le message
Oui c'est possible avec la commande client psql \lo_import ou sur le serveur avec la fonction intégrée lo_import()
Bonjour,

j'ai pas comprid comment avec le clé oid le client peut récupérer le fichier .exe sans aucune indication (son chemin sur le serveur).

très cordialement.
maicem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 16h15   #5
Modérateur
 
Inscription : octobre 2008
Messages : 1 508
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 508
Points : 2 040
Points : 2 040
Le client qui récupère le fichier utilise la fonction lo_export() ou bien la commande psql \lo_export. Il faut passer l'OID qui a été renvoyé précédemment par lo_import (la "clef")

A l'intérieur de la base, le contenu du fichier n'a pas de chemin, il est à l'intérieur d'une table système.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 16h41   #6
Invité de passage
 
maycem amor
Inscription : octobre 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : maycem amor

Informations forums :
Inscription : octobre 2010
Messages : 8
Points : 1
Points : 1
Citation:
Envoyé par estofilo Voir le message
Le client qui récupère le fichier utilise la fonction lo_export() ou bien la commande psql \lo_export. Il faut passer l'OID qui a été renvoyé précédemment par lo_import (la "clef")

A l'intérieur de la base, le contenu du fichier n'a pas de chemin, il est à l'intérieur d'une table système.
tu peux me dire comment je peux acceder a mon fichier apartir de l'oid a partir d'un client (quelle requette à utiliser ).

merci d'avance .
maicem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 17h12   #7
Modérateur
 
Inscription : octobre 2008
Messages : 1 508
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 508
Points : 2 040
Points : 2 040
Ce n'est pas avec une requête qu'on le fait, puisqu'une requête SQL n'a aucun moyen d'écrire sur le disque de la machine cliente.
C'est le code client qui doit s'en occuper, et techniquement ça dépend dans quel langage il est écrit.
Par exemple si c'est du php, il y a une fonction pg_lo_export()
En Perl DBI, il y a une méthode pg_lo_export dans le driver Pg.
En C il y a des fonctions pour ça dans la librairie libpq.
etc...
Et à un plus haut niveau on peut toujours appeler l'exécutable psql avec une commande \lo_export avec l'oid et le chemin en local du fichier à créer.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 08h03   #8
Invité de passage
 
maycem amor
Inscription : octobre 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : maycem amor

Informations forums :
Inscription : octobre 2010
Messages : 8
Points : 1
Points : 1
bonjour,
j'ai tapé cette requête sur l'éditeur PostgreSQL :

Code :
1
2
INSERT INTO employes (nom, prenom, photo)
    VALUES ('gbgb','fgbfb', lo_import('C:/Documents and Settings/Administrateur/Bureau/Collines.jpg') );
et j'ai reçu comme erreur :

Citation:
ERREUR: n'a pas pu ouvrir le fichier serveur « C:/Documents and Settings/Administrateur/Bureau/Collines.jpg » : Permission denied


********** Erreur **********

ERREUR: n'a pas pu ouvrir le fichier serveur « C:/Documents and Settings/Administrateur/Bureau/Collines.jpg » : Permission denied
État SQL :42501
est-ce qu'il y a quelqu'un qui peut m'expliquer cette erreur ??
merci d'avance

très cordialement.
maicem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 08h55   #9
Invité de passage
 
maycem amor
Inscription : octobre 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : maycem amor

Informations forums :
Inscription : octobre 2010
Messages : 8
Points : 1
Points : 1
Citation:
Envoyé par estofilo Voir le message
Ce n'est pas avec une requête qu'on le fait, puisqu'une requête SQL n'a aucun moyen d'écrire sur le disque de la machine cliente.
C'est le code client qui doit s'en occuper, et techniquement ça dépend dans quel langage il est écrit.
Par exemple si c'est du php, il y a une fonction pg_lo_export()
En Perl DBI, il y a une méthode pg_lo_export dans le driver Pg.
En C il y a des fonctions pour ça dans la librairie libpq.
etc...
Et à un plus haut niveau on peut toujours appeler l'exécutable psql avec une commande \lo_export avec l'oid et le chemin en local du fichier à créer.
bonjour,

je suis entrain d'écrire mon code en delphi7 et ma base de donnée est de type postgresql 8.4 .

si qlqu'un connait quelque idées sur la mise en oeuvres du lo_export et lo_import sous delphi7 avec une base de donnée postgresql, merci de m'aider

très cordialement
.


maicecomba
maicem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 15h04   #10
Invité de passage
 
maycem amor
Inscription : octobre 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : maycem amor

Informations forums :
Inscription : octobre 2010
Messages : 8
Points : 1
Points : 1
Bonjour,

les fonctions lo_import et lo_export ne me servis pas paceque moi je cherche a telecharger un fichier exécutable(enregistrer dans un serveur d'avance --'le fichier exécutable lui meme pas son chemin'--)sur et apartir une machine cliente connecté via le réseau .( les fonctions lo_emport et lo_export nous servit à importer et exporter notre executable sur la même machine serveur mais en lençant la requette à partir une machine cliente connecté en distance) .

je sais pas si j'ai bien formulé ma question mais voila c sa mon probléme .

s'il vous plait si qlq conait qlque idée n'hésiter pas à m'informer

j'écris mon code en delphi 7 et mon serveur est de type postgresql 8.4.


très cordialement.

maicecomba
maicem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 15h31   #11
Modérateur
 
Avatar de ymoreau
 
Homme Yoann Moreau
Ingénieur en laboratoire de recherche
Inscription : septembre 2005
Messages : 724
Détails du profil
Informations personnelles :
Nom : Homme Yoann Moreau
Âge : 26
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Ingénieur en laboratoire de recherche
Secteur : Enseignement

Informations forums :
Inscription : septembre 2005
Messages : 724
Points : 1 130
Points : 1 130
Bonjour, ce n'est pas tout à fait clair. Mais dans tous les cas c'est le code client en delphi qui va devoir gérer le téléchargement. Que ce soit directement par un transfert de fichier (avec TIdFTP apparemment), ou bien par une requête SQL sur le serveur Postgresql depuis le client comme l'a indiqué estofilo avec lo_export (à voir avec l'API Delphi donc).

Le forum delphi sera surement d'une grande aide pour tout ça :
http://www.developpez.net/forums/f15...pement/delphi/
ymoreau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 16h18   #12
Invité de passage
 
maycem amor
Inscription : octobre 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : maycem amor

Informations forums :
Inscription : octobre 2010
Messages : 8
Points : 1
Points : 1
Citation:
Envoyé par ymoreau Voir le message
Bonjour, ce n'est pas tout à fait clair. Mais dans tous les cas c'est le code client en delphi qui va devoir gérer le téléchargement. Que ce soit directement par un transfert de fichier (avec TIdFTP apparemment), ou bien par une requête SQL sur le serveur Postgresql depuis le client comme l'a indiqué estofilo avec lo_export (à voir avec l'API Delphi donc).

Le forum delphi sera surement d'une grande aide pour tout ça :
http://www.developpez.net/forums/f15...pement/delphi/
Bonjour ,
mais la fonction lo_export nous permet de telecharger le fichier .exe de la base de donnée sur le disc dur du serveur c à dire physiquement le fichier .exe reste tjrs sur la machine serveur et no plus sur la machine client

sa c que j'ai comprid d'aprés les exemples que j'ai fais .
si vous avez une autre explication merci de m'informer.

très cordialement.
maicem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 16h46   #13
Modérateur
 
Avatar de ymoreau
 
Homme Yoann Moreau
Ingénieur en laboratoire de recherche
Inscription : septembre 2005
Messages : 724
Détails du profil
Informations personnelles :
Nom : Homme Yoann Moreau
Âge : 26
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Ingénieur en laboratoire de recherche
Secteur : Enseignement

Informations forums :
Inscription : septembre 2005
Messages : 724
Points : 1 130
Points : 1 130
La fonction lo_export du langage SQL de posgresql copie sur le serveur, mais la fonction lo_export de l'API postgresql copiera en local. Il faut bien entendu que la fonction soit exécutée par le code client pour copier des données chez le client.

Même chose pour l'import que tu as montré en exemple. Le fichier doit être sur le serveur pour que ta requête SQL fonctionne. Sinon tu dois passer par l'API client pour envoyer les données.

Mais encore une fois, une connexion FTP ne suffirait elle pas ?
ymoreau est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h45.


 
 
 
 
Partenaires

Hébergement Web