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 lire le contenu d'un BLOB (texte)


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 38
    Points
    38
    Par défaut Comment lire le contenu d'un BLOB (texte)
    Histoire simple:
    Quel est la commande SQL pour lire le contenu d'un champ BLOB dans une database? Je crois qu'il faut utiliser des cast()...

    Histoire compliqué:
    On utilie Crystal Report pour faire des rapports sur une database qui vient d'être converti en format Oracle, précédemment c'était du P4 (utilisé par ServiceCenter).

    Merci de l'aide!

  2. #2
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut
    En SQL, je ne pense pas. Voici un tuto qui explique comment faire en PL/SQL.
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

  3. #3
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut
    Je confirme que c'est pas possible en SQL sous 10g et moins.
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 38
    Points
    38
    Par défaut
    Ouffe...

    Bon je connais pas le PL/SQL d'Oracle. J'ai vu ce guide: http://sheikyerbouti.developpez.com/pl_sql/

    Je vais essayer de trouver de quoi. Mais si quelqu'un peut m'aide avec la commande PL/SQL nécessaire afin de prendre le contenu d'un Blob (qui contient du text) ce serait bien apprécié.

  5. #5
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut
    As tu consulté le lien que je t'ai donné? on explique comment faire et le code est commenté. Dans la première partie on écrit et dans la seconde on lit le BLOB.

    A+
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 38
    Points
    38
    Par défaut
    Je l'ai lu et je comprend pas c'est quoi la différence avec SQL standard...

    SELECT image INTO v_blob FROM t_blob WHERE id = 1;

    La chose est que nous utilisons Crystal Report pour les commandes SQL. Donc peut-être que l'on doit faire une connection différente avant (pour indiquer que l'on communique en PL/SQL peut-être..).

    Je voie pas dans le tutoriel ce que je peux faire de différent... J'avoue que je m'attendais à un genre de CAST(leChamp, varchar(255)) genre.

  7. #7
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut
    Au sujet de Crystal Report je n'y connais rien. Donc si ton problème est spécifique à Crystal Report tu es sur le mauvais forum.

    Un champ BLOB contient du binaire, avec SQL tu ne peux récupérer que du texte, des caractères. Le PL/SQL que j'ai proposé va donc te permettre de recupérer le contenu du champ BLOB et de l'écrire dans un fichier (pdf, jpeg, etc.) afin que tu puisses lire le fichier avec un programme capable de lire du contenu binaire (Crystal Report peut être).

    l'instruction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT image INTO v_blob FROM t_blob WHERE id = 1;
    permet de recuperer le contenu du champ "image" (un BLOB) pour le mettre dans une variable de type BLOB: v_blob. Maintenant il faut écrire le contenu de cette variable quelque part, c'est là que le PL/SQL va être utilisé pour l'écrire dans un fichier car celà n'est pas possible avec le SQL.

    Par exemple si le champ en question contient du binaire qui represente une image, le PL/SQL va le lire de la BD pour l'écrire sur ton disque dur en tant que fichier; et après avec par exemple du HTML tu pourras afficher l'image dans une page web.

    Avec Crystal Report je ne sais pas comment cela se passe.
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    J'ajouterai que par nature les LOBs ne sont pas fait pour être interrogés en pur SQL, ils peuvent contenir plusieurs Go de données donc à moins de vouloir mettre votre serveur sur les rotules, appliquez les conseils prodigués.

    Maintenant si vous avez créé un LOB pour insérer un commentaire de 1000 caractères, c'est une erreur de conception.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Maintenant si vous avez créé un LOB pour insérer un commentaire de 1000 caractères, c'est une erreur de conception.
    [Expérience] - Ouais, mais tu vois, pour ce commentaire, on a vraiment besoin de pouvoir y mettre le maximum d'info, des images, des fichiers...
    5 ans après, 40 millions d'enregistrements dans la table plus tard, une dizaine d'enregistrements ont ce champ LOB non null avec pas plus de 2000 caractères - limitation dû à l'appli java...[/Expérience]

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/05/2014, 16h56
  2. Comment lire le contenu d'un fichier texte?
    Par millien dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 25/05/2009, 12h52
  3. Comment récupérer le contenu de plusieurs fichiers textes ?
    Par calimero2611 dans le forum Langage
    Réponses: 9
    Dernier message: 19/02/2006, 15h45
  4. [Débutant]Comment lire le contenu d'une Listview ?
    Par PierreBord dans le forum Composants VCL
    Réponses: 2
    Dernier message: 13/02/2006, 16h40
  5. Comment lire le contenu d'un fichier ?
    Par AsmCode dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 24/11/2005, 08h17

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