La base de données Oracle: Comment lire un BLOB?
Je travaille avec une base de données Oracle, et je voudrais lire le contenu d'un BLOB. Comment dois-je faire?
Quand je fais une instruction select simple, il se contente de "BLOB ()" (sans les guillemets). Comment lire le contenu réel?
Voir stackoverflow.com/questions/828650/...
double possible de Comment puis-je obtenir le contenu textuel de BLOB Oracle SQL
J'ai essayé la requête dans ce thread et j'ai obtenu le message d'erreur suivant: "ORA-06502: PL/SQL: numérique ou de la valeur d'erreur: brut longueur variable trop longtemps ORA-06512: à ligne 1 06502. 00000 - "PL/SQL: numérique ou de la valeur d'erreur%s" *Cause: *Action:"
En Binaire Métier (LOB) pourrait contenir des valeurs qui ne sont pas représentable comme VARCHAR. En PL\SQL, un VARCHAR variable peut contenir 32767 octets, attention à la base de données du jeu de caractères trop.
Pourquoi ne pas utiliser un client graphique qui peut afficher le contenu des colonnes BLOB (en supposant que vous utilisez SQL*Plus)
double possible de Comment puis-je obtenir le contenu textuel de BLOB Oracle SQL
J'ai essayé la requête dans ce thread et j'ai obtenu le message d'erreur suivant: "ORA-06502: PL/SQL: numérique ou de la valeur d'erreur: brut longueur variable trop longtemps ORA-06512: à ligne 1 06502. 00000 - "PL/SQL: numérique ou de la valeur d'erreur%s" *Cause: *Action:"
En Binaire Métier (LOB) pourrait contenir des valeurs qui ne sont pas représentable comme VARCHAR. En PL\SQL, un VARCHAR variable peut contenir 32767 octets, attention à la base de données du jeu de caractères trop.
Pourquoi ne pas utiliser un client graphique qui peut afficher le contenu des colonnes BLOB (en supposant que vous utilisez SQL*Plus)
OriginalL'auteur ktm5124 | 2011-04-15
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire un dump de la valeur en hexadécimal en utilisant
UTL_RAW.CAST_TO_RAW(UTL_RAW.CAST_TO_VARCHAR2())
.C'est pratique parce que vous c'est le même format utilisé pour l'insertion dans les colonnes BLOB:
Cependant, à un certain point (2000 octets?) le correspondant de la chaîne hexadécimale dépasse Oracle de la longueur maximale de la chaîne. Si vous avez besoin de gérer ce cas, vous devrez combiner Comment puis-je obtenir le contenu textuel de BLOB Oracle SQL avec le documentation de
DMBS_LOB.SUBSTR
pour une plus compliqué approche qui vous permettra de vous pour voir les sous-chaînes de la GOUTTE.OriginalL'auteur andrewdotn
SQL Developer peut montrer la goutte comme une image (au moins il fonctionne pour les fichiers jpeg). Dans la vue de Données, double-cliquez sur le champ BLOB pour obtenir le "crayon" de l'icône. Cliquez sur le crayon pour obtenir une boîte de dialogue qui vous permettra de sélectionner "Afficher en tant Qu'Image" case à cocher.
OriginalL'auteur bob coner
Si le contenu n'est pas trop large, vous pouvez également utiliser
ou
Cela va vous montrer les valeurs hexadécimales.
OriginalL'auteur AchimHensel
Si vous utilisez le natif Oracle fournisseur de données plutôt que le pilote Microsoft, alors vous pouvez obtenir tous les types de champ
La chaîne de connexion n'a pas besoin d'un Fournisseur de valeur, de sorte que vous utilisez quelque chose comme:
Ouvrir la connexion:
Joindre la commande et de l'ensemble de l'instruction Sql
Définir la taille de l'Extraction. J'utilise 4000 parce qu'il est aussi gros qu'un varchar peut être
Démarrer le lecteur et boucle à travers les enregistrements/colonnes
Vous pouvez être plus précis avec la lecture, par exemple, le dr.GetOracleString(i) dr.GetOracleClob(i) etc. si vous avez d'abord identifier le type de données dans la colonne. Si vous êtes en train de lire un type de données LONG alors le simple
dr(i)
oudr.GetOracleString(i)
fonctionne très bien. La clé est de s'assurer que le InitialLONGFetchSize est assez grand pour le type de données. Notez également que le pilote natif ne prend pas en chargeCommandBehavior.SequentialAccess
pour le lecteur de données, mais vous n'en avez pas besoin et aussi, le LONG de champ ne doit même pas être le dernier champ dans l'instruction select.OriginalL'auteur Dave Harper
Ce client utilisez-vous? .Net, Java, Ruby, SQLPLUS, SQL DEVELOPER? Où avez-vous écrivez que l'instruction select simple?
Et pourquoi voulez-vous lire le contenu de la goutte, une goutte contient des données binaires, les données sont illisibles. Vous devez utiliser un clob au lieu d'une goutte, si vous souhaitez stocker du texte au lieu de le contenu binaire.
Je vous suggère de télécharger SQL DEVELOPER: http://www.oracle.com/technetwork/developer-tools/sql-developer/overview/index.html . Avec SQL DEVELOPER, vous pouvez voir le contenu.
Elle peut être liée à la SQL Developer version. Semble que le BLOB télécharger / visualisation fonctionnalité a été ajoutée uniquement sur les versions les plus récentes.
OriginalL'auteur TTT
Si vous êtes intéressés à obtenir le texte en clair (partie du corps) à partir d'un
BLOB
, vous pouvez utiliser le CTX_DOC paquet.Par exemple, la
CTX_DOC.FILTER
procédure peut "produire un texte simple ou une version HTML d'un document". Sachez queCTX_DOC.FILTER
nécessite un index sur laBLOB
colonne. Si vous ne voulez pas cela, vous pouvez utiliser leCTX_DOC.POLICY_FILTER
procédure au lieu de cela, qui ne nécessitent pas un indice.OriginalL'auteur 5ton3