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 :

extraire un champ blob


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 4
    Points
    4
    Par défaut extraire un champ blob
    bonjour,

    dans une table il y a un champ blob qui contient pour chaque ligne des fichier excel

    pouvez vous me donner une méthode pour extraire ces fichier dans un répertoire

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    Dépendant de ta version Oracle...

    Avec 9i il existe une fonction du package UTL_FILE:
    DECLARE
    l_file UTL_FILE.FILE_TYPE;
    l_buffer RAW(32767);
    l_amount BINARY_INTEGER := 32767;
    l_pos INTEGER := 1;
    l_blob BLOB;
    l_blob_len INTEGER;
    BEGIN
    -- Get LOB locator
    SELECT col1
    INTO l_blob
    FROM tab1
    WHERE rownum = 1;

    l_blob_len := DBMS_LOB.getlength(l_blob);

    -- Open the destination file.
    l_file := UTL_FILE.fopen('BLOBS','MyImage.gif','w', 32767);

    -- Read chunks of the BLOB and write them to the file
    -- until complete.
    WHILE l_pos < l_blob_len LOOP
    DBMS_LOB.read(l_blob, l_amount, l_pos, l_buffer);
    UTL_FILE.put_raw(l_file, l_buffer, TRUE);
    l_pos := l_pos + l_amount;
    END LOOP;

    -- Close the file.
    UTL_FILE.fclose(l_file);

    EXCEPTION
    WHEN OTHERS THEN
    -- Close the file if something goes wrong.
    IF UTL_FILE.is_open(l_file) THEN
    UTL_FILE.fclose(l_file);
    END IF;
    RAISE;
    END;
    /
    (voir article http://www.oracle-base.com/articles/9i/ExportBlob9i.php)

    Autrement, possibilité avec une procédure Java:
    CREATE OR REPLACE JAVA SOURCE NAMED "BlobHandler" AS
    import java.lang.*;
    import java.sql.*;
    import oracle.sql.*;
    import java.io.*;

    public class BlobHandler
    {

    public static void ExportBlob(String myFile, BLOB myBlob) throws Exception
    {
    // Bind the image object to the database object
    // Open streams for the output file and the blob
    File binaryFile = new File(myFile);
    FileOutputStream outStream = new FileOutputStream(binaryFile);
    InputStream inStream = myBlob.getBinaryStream();

    // Get the optimum buffer size and use this to create the read/write buffer
    int size = myBlob.getBufferSize();
    byte[] buffer = new byte[size];
    int length = -1;

    // Transfer the data
    while ((length = inStream.read(buffer)) != -1)
    {
    outStream.write(buffer, 0, length);
    outStream.flush();
    }

    // Close everything down
    inStream.close();
    outStream.close();
    }

    };
    /

    ALTER java source "BlobHandler" compile;
    show errors java source "BlobHandler"

    Voir article: http://www.oracle-base.com/articles/8i/ExportBlob.php

    Hope it helps!

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/02/2008, 16h01
  2. Extraire un champ BLOB vers un fichier sur le serveur
    Par ALEX77 dans le forum Firebird
    Réponses: 7
    Dernier message: 24/09/2007, 21h24
  3. [interbase] transferer un champ blob en par prog
    Par Harry dans le forum Bases de données
    Réponses: 4
    Dernier message: 26/02/2004, 10h39
  4. Update d'un champ BLOB
    Par ZeKlubb dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 17/01/2004, 16h04
  5. faire un insert pour un champ blob
    Par tripper.dim dans le forum InterBase
    Réponses: 10
    Dernier message: 02/05/2003, 16h56

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