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