Blob pl/sql

Azerty -  
 Utilisateur anonyme -
Bonjour,

J'ai un problème, quand j'export mes fichiers stocké en Blob dans la base de donnée ils sont illisibles, j'ai le bon nom, la bonne extension (exemple test.pdf) mais je ne peut pas les ouvrir ou alors ils contiennent des caractères bizarres.

Comment faire pour connaitre l'encodage et pouvoir les décoder correctement a l'extraction?

Merci

3 réponses

  1. Utilisateur anonyme
     
    Bonjour,

    A titre d'information :

    Avec certains languages et dépendament aussi du type
    de la BD (MySQL, SQL Serveur ou Oracle), il y a
    segmentation du Blob.

    Personnellement, j'en ai fait l'expérience avec Oracle
    et un language similaire à VB6, les Blobs étaient segmentés
    au moment de la sauvegarde, il était alors impératif
    de les récupérer avec une clause [Order By] de l'indice
    de segmentation.

    Ce pourrait être votre cas !

    Cdt

    Lupin
    1
  2. Azerty
     
    Bonjour,

    Tout d'abord merci pour votre réponse.

    Pour extraire les fichiers j'utilise la commande DBMS_LOB.read avec un buffer de 32767 (je développe en PL/SQL) du coup les segments sont bien repris dans l'ordre.

    Cdt
    0
  3. Utilisateur anonyme
     
    re:

    Oui selon ma doc, ton buffer est à la bonne taille. Mais comme
    je t'ai dit, sous SQLD, l'instruction de blobage segmente aussi en 32K.

    Il est clair que je n'ai pas utiliser l'instruction du PL/SQL, mais
    le problème semble assez similaire. Je recommande la doc
    de Oracle que tu trouveras ici :

    https://docs.oracle.com/cd/B19306_01/appdev.102/b14258/toc.htm

    Le document est téléchargeable sous format PDF, et on y fournit
    des exemples explicites sur l'utilisation de la commande [DBMS_LOB].

    Suggestion, commence par blober un fichier plus petit que 32K,
    et relit le ensuite. Si celui-ci est bien lu, c'est qu'il y a segmentation
    pour les fichiers plus grand que 32K et la lecture des segments ne
    se fait pas dans le bon ordre, l'utilisation de l'instruction PL/SQL
    [DBMS_LOB.Read] ne signifie pas nécessairement que celle-ci
    ordonne les segments lors de la lecture.

    Je vais faire aussi un peu de lecture si j'ai le temps, j'apprends depuis
    près d'un an le PL/SQL et le sujet m'intéresse, si je trouve quelque
    chose, je te reviens :-).

    Cdt

    Lupin
    0
    1. Utilisateur anonyme
       
      re:

      J'oubliais, sous quelle version d'Oracle est-tu ?

      Cdt

      Lupin
      0