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

MATLAB Discussion :

Oracle insérer un BLOB depuis Matlab


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Par défaut Oracle insérer un BLOB depuis Matlab
    Bonjour à tous !


    Est-ce que quelqu'un a déjà des expériences concernant l'insertion de variables Matlab en binaire sous Oracle ?


    Problème, c'est ce que j'ai aucun droit sur le serveur : on ne peut pas déplacer les fichiers dessus, lui filer le chemin et demander à une proc SQL de charger le fichier.




    En fait, il me faudrait juste un moyen d'envoyer des données binaires dans un champs Blob de Oracle, en Matlab.


    Si vous avez une idée, je veux bien, j'avais essayé avec une ancienne version de Matlab, et je m'étais rabattu sur l'appel d'une api java depuis Matlab.

  2. #2
    Membre émérite Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Par défaut
    en fait je ne crois pas que ça soit possible : il faudrait que parsebinary puisse parser un .MAT


    edit : je suis en train d'adapter un code trouvé sur matlabworks, pour les bases mysql, mais j'ai peu d'espoir.

  3. #3
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    si tu as la Database Toolbox 3.1 (R14SP3) ou au dessus c'est possible:
    http://www.mathworks.com/support/sol...ution=1-220TQ7

  4. #4
    Membre émérite Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Par défaut
    oh c'est parfait !
    Merci bien je désespérais.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    fid = fopen('bindata.mat','rb'); %Read in the binary data from the MAT-file 
    data = fread(fid,'int8');
    fclose(fid);
     
    %% Now insert data
    conn = database('myDatabase', '<username>', '<password>');%Other arguments supplied as necessary
    fastinsert(conn, 'MyBinDataTable', 'BinData', {data});
    commit(conn);
    close(conn);

  5. #5
    Membre émérite Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Par défaut
    voila ce que ça donne (fait à l'arrache, soyez indulgents) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    create table BinData(id integer, dat integer, name varchar2(30), data integer);

    execSQL fait ce qu'on imagine...

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    function out = bin2oracle(mode,name,var)
    % Save variables into oracle as binaries (BLOB)
    % 
    % Use :
    % - out = bin2oracle(mode,name,var)
    % 
    % Example :
    % >> bin2oracle('save','myvar',1:10)
    % >> bin2oracle('load','myvar')
    % >> bin2oracle('delete','myvar')
    % >> bin2oracle('delete','*') % be careful : delete all !
     
    % author 'Thomas Grin'
    % title 'bin2oracle'
    % project ''
    % date 'July-2006'
     
    tmpfile1 = 'c:\tmpbin2oracleload.mat';
    tmpfile2 = 'c:\tmpbin2oraclesave.mat';
     
    if(nargin < 3)
        var = 'bin2oracle: save error';
    end
     
    switch mode
        case 'load'
            query = sprintf('select data from BinData where name like ''%s''',name);
            bin = execSQL('****','*****','*****',query);
     
            fid = fopen(tmpfile1,'w');
            fwrite(fid,cell2mat(bin),'int8');
            fclose(fid);
     
            tmp = load(tmpfile1);
            out = tmp.var;
     
     
        case 'save'
            save(tmpfile2,'var')
            fid  = fopen(tmpfile2,'r');
            data = fread(fid,'int8');
            fclose(fid);
            for i=1:length(data)
                dat = now;
                query = sprintf('insert into BinData(dat,name,data) values(%d,''%s'',%d)',dat,name,data(i));
                execSQL('*****','*****','****',query);
            end
     
     
        case 'delete'
            query = 'delete from BinData';
            if ~strcmp(name,'*')
                query = [query, sprintf('where name like ''%s''',name)];
            end
            execSQL('*****','*****','****',query);
    end

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/07/2013, 12h48
  2. Type BLOB depuis une base de données Oracle
    Par tunis71187 dans le forum Designer
    Réponses: 0
    Dernier message: 13/06/2011, 12h25
  3. Réponses: 2
    Dernier message: 17/10/2007, 12h29
  4. [VBA-A]Insérer du texte depuis Access
    Par soad029 dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/03/2006, 15h32
  5. [DELPHI 5] [ADO] [ORACLE 8i] Getfieldnames + Blob....
    Par tpetitpi dans le forum Bases de données
    Réponses: 4
    Dernier message: 26/03/2004, 15h35

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