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

SQL Oracle Discussion :

Comment Ouvrir un "blob" avec une commande sql


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 99
    Par défaut Comment Ouvrir un "blob" avec une commande sql
    Bonjour à tous,

    je souhaiterais savoir s'il est possible d'une part d'ouvrir un fichier de type blob, et d'en sauvegarder le contenu avec des commandes sql, j'ai lu des choses sur ce sujet, mais je n'ai pas bien compris, il faut savoir que j'ai des accès limité sur la base de données, par exemple je ne peux pas créer de tables, je peux juste voir (et lire ces données).
    Je travaille avec SQL-Developer.

    Voici ce que je veux faire
    Nom : img2.png
Affichages : 2452
Taille : 7,7 Ko

    Au moyen d'un export, générer sur mon micro, un fichier par exemple de type "xml". Cela me semble possible, une autre contrainte je ne peux pas utiliser de commande java ....., seul le sql est possible pour moi.

    Vous ayant expliqué mes contraintes et mon besoin, est-ce possible et comment?

    Vous remerciant par avance
    Bonne journée à tous et à bientôt j'espère

  2. #2
    Membre confirmé
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Janvier 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2014
    Messages : 28
    Par défaut
    Bonjour,

    Via Sql Developper tu peux :
    - aller sur ta table, onglet données
    - clic droit "vue d'enregistrement unique
    - sur ta colonne, clic sur le crayon
    - la nouvelle fenêtre contient l'action "Télécharger" en haut vers le milieu

    C'est je pense le plus simple pour une action unitaire.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 99
    Par défaut Merci, mais je voudrais en ouvrir plusieurs (beaucoup, alors ...)
    Bonjour
    merci pour ta réponse, j'aurais dû préciser dans ma question que j'ai besoin d'en ouvrir plusieurs dizaines d'où ma demande, ce que ta réponse convient comme tu l'as précisé pour de l'unitaire, et ça je savais faire, mais s'il y en a beaucoup ma question prend tout son sens.
    D'avance Merci à celles ou ceux qui ont idée
    Bonne journée

  4. #4
    Membre confirmé
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Janvier 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2014
    Messages : 28
    Par défaut
    Une procédure trouvée il y a quelques années sur le net :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
      procedure to_file(dir in varchar2, file in varchar2, lob in blob) is
        output_file    utl_file.file_type;
        chunk_size     constant pls_integer := 4096;
        buf            raw                    (4096); -- Must be equal to chunk_size
        written_sofar  pls_integer := 0;              --(avoid PLS-00491: numeric literal required)
        bytes_to_write pls_integer;
        lob_len        pls_integer;
      begin
     
        lob_len := dbms_lob.getlength(lob);
     
        output_file := utl_file.fopen(dir, file, 'WB');
     
        while written_sofar + chunk_size < lob_len loop
     
          bytes_to_write := chunk_size;
          dbms_lob.read(lob,bytes_to_write,written_sofar+1,buf);
          utl_file.put_raw(output_file,buf);
          written_sofar := written_sofar + chunk_size;
     
        end loop;
     
        bytes_to_write := lob_len-written_sofar;
        dbms_lob.read(lob,bytes_to_write,written_sofar+1,buf);
        utl_file.put_raw(output_file,buf);
     
        utl_file.fclose(output_file);
     
      end to_file;

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 99
    Par défaut Besoin de précisions
    Bonjour,
    merci pour ton aide, j'ai essayé d'analyser cette procédure, malheureusement je ne connais rien (pour l'instant) à ce type de commandes, alors je suis aller glaner sur le net des infos sur ce sujet. Et voici ce qui me reste encore comme questions, à travers les snapshots que je mets il sera peut-être + facile d'adapter la requête que tu m'as mis en réponse, sinon d'adapter celle que j'ai trouvée.
    Voici la structure de ma base de données (elle est très simple car elle n'a qu'un but c'est de me permettre de comprendre :
    Nom : TestBlob1.jpg
Affichages : 2435
Taille : 20,1 Ko

    et en voici le contenu
    Nom : TestBlob2.jpg
Affichages : 2545
Taille : 39,3 Ko

    et enfin voici le message d'erreur qui apparaît
    Nom : TestBlob3.jpg
Affichages : 2501
Taille : 21,7 Ko

    avec cette procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    CREATE OR REPLACE PROCEDURE test_read_bfile IS
    Lob_loc BFILE;
    blobValue BLOB;
    binary_buffer_var RAW(25);
    offset INTEGER := 1;
    amount_var INTEGER := 25;
     
    BEGIN
    /* Select the LOB: */
    SELECT XML_TEST INTO Lob_loc FROM TEST_OPBLOB
    WHERE DEPOT = 'ZZZ';
    /* Open the BFILE: */
    DBMS_LOB.OPEN(blobValue, amount_var, offset, binary_buffer_var);
    /* Read data: */
    DBMS_LOB.READ(blobValue, amount_var, offset, binary_buffer_var);
    /* Close the BFILE: */
    DBMS_LOB.CLOSE(Lob_loc);
    END;

    Peut-être que quelqu'un ayant des connaissances plus profondes que moi (et ce ne sera pas difficile) pourra-t-il m'aider ?
    Vous remerciant par avance
    Je vous souhaite à tous une très bonne journée

  6. #6
    Membre confirmé
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Janvier 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2014
    Messages : 28
    Par défaut
    DBMS_LOB.OPEN n'admet que 2 paramètres :
    - le premier BLOB, CLOB ou BFILE
    - le second Binary_integer

  7. #7
    Membre actif
    Homme Profil pro
    ingénieur d'étude PL/SQL
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'étude PL/SQL

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Par défaut
    1 petit lien qui pourrait d'aider :
    http://www.developpez.net/forums/d56...-vers-fichier/

    bon courage

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 99
    Par défaut Mon problème subsiste toujours
    Bonjour,
    merci à tous de vos réponses, pour l'instant je suis en phase d'apprentissage, et bien que le brouillard se dissipe, il est encore trop épais pour que je puisse me passer de vos conseils et de votre aide, merci aussi au modérateur pour ses conseils. Par rapport à la réponse de vttvolant, j'ai regarder ce qui se cachait derrière le lien (url) et j'ai une question, qui va peut-être vous paraître absurde, mais, bien que connaissant quelque commandes sql, tout ce qui est "DBMS" m'est complètement inconnu, alors soyez indulgents, on "parle de création de fichier (pour mettre le contenu du blob), ceci pourrait me convenir, mais où se trouve ce fichier, sur mon micro (on parle de répertoire) ou alors dans l'environnement/base Oracle (comme je ne peux pas écrire dedans ça ne me conviendrait pas, cependant pour fairemes essais je dispose d'une base de test, alors j'ai essayé, mais j'ai des messages d'erreurs, même en mettant le buffer à 32.... (comme préconisé). Cependant, avant d'aller plus loint pourriez vous me dire où se trouve le fichier créé (la cible), la source étant mon fichier avec le blob.
    Merci encore pour votre aide
    bonne soirée et à bienôt j'espère

Discussions similaires

  1. Importer un fichier csv dans une table avec une commande sql ?
    Par pepito62 dans le forum Import/Export
    Réponses: 8
    Dernier message: 25/03/2015, 15h10
  2. Comment ouvrir un fichier excel avec une commande batch ?
    Par Alexandrebox dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 18/03/2010, 13h15
  3. Comment créer un site immobilier dynamique avec une base de données ?
    Par Alain troverti dans le forum Général Conception Web
    Réponses: 14
    Dernier message: 07/07/2006, 21h57

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