Java - Problemas recuperar CLOB desde BBDD Oracle

 
Vista:

Problemas recuperar CLOB desde BBDD Oracle

Publicado por Jose Miguel (2 intervenciones) el 11/06/2014 13:54:26
Buenos Días,

Tengo una BBDD Oracle con codificación NLS_CHARACTERSET = WE8ISO8859P1 . Tengo una tabla con un CLOB en la que guardo imágenes de tipo jpg, gif, etc separados por tags [FICHERO] de esta forma..
[FICHERO nombre1.jpg] Codificación del fichero de imagen 1
[FICHERO nombre2.gif] Codificación del fichero de imagen 2
......
[FICHERO nombren.jpg] Codificación del fichero de imagen N

En java recupero este CLOB, hago un split para separar los trozos de cada imagen y el problema viene cuando esos trozos los grabo en ficheros separados.
La codificación parece estar bien, pero no es exactamente igual que el campo de la BBDD original, sustituye algunos caracteres por otros y las imágenes no se ven bien.
Creo que es un problema de codificación entre la BBDD y luego recuperar este texto como string. Llevo una semana pegándome con esto, alguien podría echarme una mano.
Dejo este trozo de código por si les puede ayudar, si necesitan cualquier información adicional no duden en consultarme.

Tan solo un comentario mas, estos CLOBs ya estaban en la BBDD (antes se recuperaban en visual Basic y ahora tengo que recuperarlos en JAVA) y no los puedo modificar y tampoco puedo modificar el NLS_CHARACTERSET de la BBDD


// Recuperar CLOB

File file = new File(pathname);
fos = new FileOutputStream(file);
Blob bin = rs.getBlob("img_imagen");
InputStream inStream = bin.getBinaryStream();
int size = (int)bin.length();
byte[] buffer = new byte[size];
int length = -1;
while ((length = inStream.read(buffer)) != -1) {
fos.write(buffer, 0, length);
}

// La clob recuperado lo pongo en un String
cadena = new String(buffer);

// Después troceo el String y voy guardando los trozos en ficheros.

Saludos y gracias de antemano
Jose Miguel
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problemas recuperar CLOB desde BBDD Oracle

Publicado por Tom (1831 intervenciones) el 11/06/2014 14:59:43
En primer lugar ... dices que son CLOB, pero los lees como si fueran BLOB ...
Luego, no tiene mucho sentido almacenar imágenes en formato jpg como CLOB, así que lo más seguro es que en la BD sean BLOB.

Tampoco parece muy correcto manejar datos de una imagen jpg en un String ...

¿ la parte del código que has puesto, la que lee el BLOB y lo copia a un fichero, funciona o no ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas recuperar CLOB desde BBDD Oracle

Publicado por Jose Miguel (2 intervenciones) el 11/06/2014 15:36:54
Efectivamente he cometido un error queria decir BLOB.

Con respecto a la forma de recuperarlo, tienes razon que es la forma de escribir un fichero, lo recupera bien, todo el fichero. De echo cojo este fichero y manualmente lo abro, dejo un trozo de codigo a mano de lo que es una imagen, lo guardo con la extension que corresponde y la imagen se ve perfecta.

Y con lo meter imagenes en BLOB es algo que tengo heredado como os he comentado y tengo que trabajar a la fuerza con estos registros.

Saludos y gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar