Blob pl/sql

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

  • Votes
  • Date
  • Date décroissante
  1. 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
    1. re:

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

      Cdt

      Lupin
  2. 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
    1. 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