2009-06-11 12 views
5

Come visualizzare un dato BLOB, posso esportarlo in un file di testo? Sto usando Oracle SQL Developer 5.1. Quando ho provatoVisualizza dati BLOB che contengono testo in formato XML

select utl_raw.cast_to_varchar2(dbms_lob.substr(COLNAME)) 
    from user_settings where <fieldname>=... 

Si restituisce il seguente errore: ORA-06502 PL/SQL : numeric or value error : raw variable length too long

Il BLOB contiene testo in formato XML.

risposta

1

I dati BLOB sono in genere solo ... un blob blob di dati.

Certo, è possibile esportarlo in un file di testo convertendolo in una sorta di rappresentazione di testo ... Ma cosa succede se si tratta di un'immagine?

jaganath: È necessario sedersi e capire che cosa si sta trattando, e quindi scoprire cosa è necessario fare.

+0

Dimenticato di menzionare, il BLOB contiene testo in formato XML –

0

Dal messaggio di errore sembra che la lunghezza del blob sia troppo lunga per essere inserita in un varchar. È possibile eseguire la conversione nel codice dell'applicazione e scrivere l'XML in una stringa o un file.

1

si poteva guardare DBMS_LOB.CONVERTTOCLOB

Ma se è XML, il motivo per conservarlo in un BLOB piuttosto che un XMLType (o CLOB)

6

Per visualizzare i dati XML memorizzati come BLOB, fare il a seguire;

  1. Aprire la vista tabella, con la scheda di dati selezionati
  2. Fare doppio clic sul valore di campo della colonna, e un pulsante di matita dovrebbe apparire nel campo. Fai clic sul pulsante della matita. Pencil Button
  3. La finestra Modifica valore deve essere aperta, fare clic sulla casella di controllo "Visualizza come: testo". Da questa finestra è inoltre possibile salvare qualsiasi particolare dato di file richiesto. Select the view type

PS: Io corro Oracle SQL Developer versione 3.1.05

3

Causa sopra le dimensioni del campo di visualizzazione. È necessario impostare la dimensione Si aggiunge 1500 per il substr, dovrebbe funzionare.

select utl_raw.cast_to_varchar2(dbms_lob.substr(colname,1500)) 
from user_settings where <row_id>=...