Rv: Consulta - Guardar Archivo en Postgres

From: Brando Torres <bl_mikax(at)yahoo(dot)es>
To: PostgreSQL - Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Rv: Consulta - Guardar Archivo en Postgres
Date: 2009-05-14 14:49:30
Message-ID: 250925.84193.qm@web24701.mail.ird.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Señores, otra vez por aqui necesitando de su apoyo. Bueno les comento:
Estoy desarrollando un pequeño aplicativo web con JSP, el cual consiste en llevar el control de unos informes hechos en auditoria; para esto registrare todos los datos requeridos y ademas por requerimiento deberia tener la opcion de guardar archivos si fuera necesario. En primera instancie pense en guardar estos archivos en base de datos ya que estos no excederian los 2 Mb, por eso es que lanze anteriormente la pregunta de cuanto soportaba en tamaño un campo del tipo bytea. Entonces para esto cree una clase que es donde llamo a una funcion la cual detallo a continuacion:

public String uploadFileInforme(String num_informe, InputStream file, size_file) throws Exception
{
String mensaje = null;
Connection con = null;
CallableStatement cs = null;
try{
con = BD.conectar();
con.setAutoCommit(false);
String query = "{? = call auditoria.inserta_file_informe(?,?,?,?)}";
cs = con.prepareCall(query);
cs.registerOutParameter(1, java.sql.Types.VARCHAR);
cs.setString(2,num_informe.toUpperCase());
cs.setBinaryStream(3,file,size_file);
cs.execute();
mensaje = cs.getString(1);
if(mensaje.equals("OK")){
con.commit();
con.setAutoCommit(true);
}
}catch(Exception ex){
mensaje = ex.getMessage();
}finally{
try{
if (cs != null) cs.close();
if (con != null) con.close();
}catch(SQLException esql){
mensaje = esql.getMessage();
}
}
return mensaje;
}

y luego la funcion escrita en plpgsql seria:

Create or Replace Function auditoria.inserta_file_informe(varchar, bytea)
Returns Text As
$body$
Declare
mensaje varchar(5);
id numeric(16,0);
fecha_registro date;
Begin
id = 0;
fecha_registro = now();
Select id_file into id from auditoria.file_informe order by id_file DESC limit 1;
id = id + 1;
Insert Into auditoria.file_informe(id_file,cod_informe,file_informe,fec_reg) Values(id,$1,$2,fecha_registro);
If Not Found Then
Raise Exception 'Error al tratar de guardar el archivo';
Else
mensaje = 'OK';
End If;
return mensaje;
End;
$body$
Language 'plpgsql';

En base ha esto, tengo las siguiente dudas:

* Es correcto crear una funcion y enviar la data del archivo como parametro que es como lo estoy haciendo?? (sino, alguna sugerencia)

* Cuando ejecuto esto llega un punto en donde el servidor se me queda colgado, tendria que configurar algo adicional en postgres??He estado intentando de diferentes forma hacer esto pero no he encontrado la solucion, alguno de Ud. talvez haya trabajado de esta forma y me pueda dar alguna sugerencia.

Adcionalmente les comento que el servidor postgres lo tengo en una PC dentro de mi LAN y accedo a travez de una IP de forma remota.

De antemano agradezco la atencion prestada.

Salñudos.

________________________________
De: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Para: Brando <bl_mikax(at)yahoo(dot)es>
CC: pgsql-es-ayuda(at)postgresql(dot)org
Enviado: martes, 12 de mayo, 2009 13:52:56
Asunto: Re: [pgsql-es-ayuda] Consulta - Guardar Archivo en Postgres

Brando escribió:
> Hola Amigos de la lista.
> Recurro a la experiencia de muchos, por una duda que tengo al querer
> almacenar un archivo en una tabla. Bueno, leí que debería tener este
> atributo del tipo byteA, pero quisiera saber hasta cuanto podría
> almacenar en esta tabla??.

1 GB en cada columna de tipo bytea (en cada registro).

--
Alvaro Herrera http://www.amazon.com/gp/registry/CTMLCN8V17R4
"The important things in the world are problems with society that we don't
understand at all. The machines will become more complicated but they won't
be more complicated than the societies that run them." (Freeman Dyson)

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Javier Pacha 2009-05-14 15:17:03 NO SE CONFIGURA LA EXTENSION ESPACIAL EN Postgres Plus Advanced Server 8.3
Previous Message Alvaro Herrera 2009-05-14 14:38:29 Re: Timezone no reconocido por PostgreSQL + Slony-I