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
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


0