IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

Insertion d'un exécutable dans une base de donnée PostgreSQL (pas le chemin, l'exécutable lui-même)


Sujet :

Requêtes PostgreSQL

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Points : 3
    Points
    3
    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.

  2. #2
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    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à :
    https://postgresql.developpez.com/do...tion/francais/ (en bas de page : partie Format binaire)

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    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()

  4. #4
    Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    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.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    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.

  6. #6
    Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    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 .

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    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.

  8. #8
    Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    bonjour,
    j'ai tapé cette requête sur l'éditeur PostgreSQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    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.

  9. #9
    Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    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

  10. #10
    Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    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

  11. #11
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    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/

  12. #12
    Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    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.

  13. #13
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    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 ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/07/2013, 13h27
  2. Procédure stockée pour l'insertion d'un cv dans une base de données
    Par o.abdelmalek13 dans le forum Développement
    Réponses: 2
    Dernier message: 28/05/2012, 16h50
  3. Insertion tableau [x] [y] dans une base de données
    Par jean1190 dans le forum Langage
    Réponses: 7
    Dernier message: 07/04/2009, 15h28
  4. Insertion des contenus gtkentry dans une base de données
    Par charles9 dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 02/06/2008, 18h13
  5. [Conception] insertion sql en php, dans une base de donnée ?
    Par artotal dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/10/2005, 04h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo