Blob pl/sql
Azerty
-
Utilisateur anonyme -
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
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
A voir également:
- Blob pl/sql
- Logiciel sql - Télécharger - Bases de données
- Requete sql pix ✓ - Forum MySQL
- Winrar 64 ccm pl - Télécharger - Compression & Décompression
- Ora-06502: pl/sql : erreur numérique ou erreur sur une valeur: tampon de chaîne de caractères trop petit ✓ - Forum Oracle
- Sql lister les tables ✓ - Forum Programmation
3 réponses
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
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
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
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
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
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