Re: Como puedo guardar archivos binarios en una tabla de una BD Postgresql

Lists: pgsql-es-ayuda
From: Victor Montenegro Isidin <vhmontenegro(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Como puedo guardar archivos binarios en una tabla de una BD Postgresql
Date: 2005-07-21 12:00:57
Message-ID: 53c05b13050721050079a73179@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Holas:

Necesito guardar en una tabla de una BD postgres archivos binarios, es
decir, archivos .zip .jpg .doc, etc.
Como puedo subirlos a una BD Postgresql (con PHP)

--
Atte. Victor Montenegro Isidin
F: +56 57 435178
M: +56 082782070
Iquique - Chile


From: Pascual De Ruvo <deruvo(at)gmail(dot)com>
To: Victor Montenegro Isidin <vhmontenegro(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Como puedo guardar archivos binarios en una tabla de una BD Postgresql
Date: 2005-07-21 13:13:12
Message-ID: fb73c1ee0507210613171d0b5a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Revisa este ejemplo:

http://www.buayacorp.com/archivos/guardar-y-recuperar-un-archivo-en-un-campo-blob-de-postgresql-con-php/

On 7/21/05, Victor Montenegro Isidin <vhmontenegro(at)gmail(dot)com> wrote:
>
> Holas:
>
> Necesito guardar en una tabla de una BD postgres archivos binarios, es
> decir, archivos .zip .jpg .doc, etc.
> Como puedo subirlos a una BD Postgresql (con PHP)
>
> --
> Atte. Victor Montenegro Isidin
> F: +56 57 435178
> M: +56 082782070
> Iquique - Chile


From: Leonel Nunez <lnunez(at)enelserver(dot)com>
To: Victor Montenegro Isidin <vhmontenegro(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Como puedo guardar archivos binarios en una tabla de una BD Postgresql
Date: 2005-07-21 13:19:20
Message-ID: 42DFA0D8.5050107@enelserver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Victor Montenegro Isidin wrote:

> Holas:
>
> Necesito guardar en una tabla de una BD postgres archivos binarios, es
> decir, archivos .zip .jpg .doc, etc.
> Como puedo subirlos a una BD Postgresql (con PHP)
>
> --
> Atte. Victor Montenegro Isidin
> F: +56 57 435178
> M: +56 082782070
> Iquique - Chile

Usando el tipo de dato ByteA

busca en el historico de la lista

leonel


From: "Edwin Quijada" <listas_quijada(at)hotmail(dot)com>
To: vhmontenegro(at)gmail(dot)com
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: RE: Como puedo guardar archivos binarios en una tabla de una BD
Date: 2005-07-21 14:52:19
Message-ID: BAY14-F2DE04341F24AA1389A786E3D60@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Supongo que podrias usar bytea para esto. Yo hice algo asi y uso campo tipo
text codifcandolo en base64. Lo hago para almacenar fotos. Si mal no
recuerdo por aca alguein posteo como hacia esto desde php para almacenar
fotos en PG, Entiendo que el procedimiento es el mismo. Busca en los
historicos

*-------------------------------------------------------*
*-Edwin Quijada
*-Developer DataBase
*-JQ Microsistemas
*-809-747-2787
* " Si deseas lograr cosas excepcionales debes de hacer cosas fuera de lo
comun"
*-------------------------------------------------------*

>From: Victor Montenegro Isidin <vhmontenegro(at)gmail(dot)com>
>Reply-To: Victor Montenegro Isidin <vhmontenegro(at)gmail(dot)com>
>To: pgsql-es-ayuda(at)postgresql(dot)org
>Subject: [pgsql-es-ayuda] Como puedo guardar archivos binarios en una tabla
>de una BD Postgresql
>Date: Thu, 21 Jul 2005 08:00:57 -0400
>
>Holas:
>
>Necesito guardar en una tabla de una BD postgres archivos binarios, es
>decir, archivos .zip .jpg .doc, etc.
>Como puedo subirlos a una BD Postgresql (con PHP)
>
>--
>Atte. Victor Montenegro Isidin
>F: +56 57 435178
>M: +56 082782070
>Iquique - Chile

_________________________________________________________________
Visita MSN Latino Noticias: Todo lo que pasa en el mundo y en tu paín, ¡en
tu idioma! http://latino.msn.com/noticias/


From: Tyler T <espartano(dot)list(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Como puedo guardar archivos binarios en una tabla de una BD Postgresql
Date: 2005-07-21 22:32:31
Message-ID: 9385b1fc050721153213fc7fd1@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

> > Necesito guardar en una tabla de una BD postgres archivos binarios, es
> > decir, archivos .zip .jpg .doc, etc.
> > Como puedo subirlos a una BD Postgresql (con PHP)
> >
>
>
>
> Usando el tipo de dato ByteA
>
> busca en el historico de la lista
>
>
> leonel
>

Tambien puedes optar por guardar las rutas de en donde se encuentran
esos archivos, asi te evitas tener que guardar datos binarios en la
DB, saludos.


From: Leonel Nunez <lnunez(at)enelserver(dot)com>
To: Tyler T <espartano(dot)list(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Como puedo guardar archivos binarios en una tabla de una BD Postgresql
Date: 2005-07-21 22:46:30
Message-ID: 42E025C6.6050902@enelserver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Tyler T wrote:

>>>Necesito guardar en una tabla de una BD postgres archivos binarios, es
>>>decir, archivos .zip .jpg .doc, etc.
>>>Como puedo subirlos a una BD Postgresql (con PHP)
>>>
>>>
>>>
>>
>>Usando el tipo de dato ByteA
>>
>>busca en el historico de la lista
>>
>>
>>leonel
>>
>>
>>
>
>
>Tambien puedes optar por guardar las rutas de en donde se encuentran
>esos archivos, asi te evitas tener que guardar datos binarios en la
>DB, saludos.
>
>---------------------------(fin del mensaje)---------------------------
>TIP 7: no olvides aumentar la configuración del "free space map"
>
>
>
>

Lo malo de mantenerlos asi es que se tiene que hacer algo para
implementar la integridad entre el "catalogo" y los archivos

leonel


From: Mario Soto Cordones - Venezuela <msotocl(at)gmail(dot)com>
To: Victor Montenegro Isidin <vhmontenegro(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Como puedo guardar archivos binarios en una tabla de una BD Postgresql
Date: 2005-07-21 22:57:23
Message-ID: e9b17cde05072115571277aa26@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Yo utilizo para ello el tipo lo y funciona perfectamente

Saludos

El 21/07/05, Victor Montenegro Isidin<vhmontenegro(at)gmail(dot)com> escribió:
> Holas:
>
> Necesito guardar en una tabla de una BD postgres archivos binarios, es
> decir, archivos .zip .jpg .doc, etc.
> Como puedo subirlos a una BD Postgresql (con PHP)
>
> --
> Atte. Victor Montenegro Isidin
> F: +56 57 435178
> M: +56 082782070
> Iquique - Chile

--
cordialmente,

Ing. Mario Soto Cordones


From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Victor Montenegro Isidin <vhmontenegro(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Como puedo guardar archivos binarios en una tabla de una BD Postgresql
Date: 2005-07-22 01:52:36
Message-ID: 20050722015236.GA8997@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On Thu, Jul 21, 2005 at 08:00:57AM -0400, Victor Montenegro Isidin wrote:

> Necesito guardar en una tabla de una BD postgres archivos binarios, es
> decir, archivos .zip .jpg .doc, etc.
> Como puedo subirlos a una BD Postgresql (con PHP)

Resumiendo todas las respuestas que dieron, tienes 4 opciones:

1. almacenar el archivo fuera de la base de datos, y almacenar solamente
el PATH. No es mala opcion, pero necesitas un programa externo que haga
limpieza.

2. almacenar usando "large objects".

3. almacenar usando el tipo Bytea. Ventaja: tienes que hacer una
conversion al insertar y extraer, puesto que hay que escapar los
caracteres "ascii 0" (NUL), backslash y otros (AFAIR el unico otro es la
comilla simple). Alternativamente puedes usar un mecanismo que no
necesite escapar, pero entiendo que no esta implementado en PHP.

4. almacenar usando el tipo text, codificado en base64 o algun
equivalente. Desventaja: hay un consumo de CPU no despreciable para
hacer la conversion (mas costosa que la alternativa 3)

Con respecto a Bytea y Text, podria ser recomendable desactivar la
compresion de esa columna, para ahorrar algo de CPU, dependiendo de si
los archivos que almacenes sean muy compresibles (es una variante de
ALTER TABLE que dice algo de "STORAGE". Lee el manual.)

Con respecto a la alternativa 2, es lo que hay en un articulo que habla
sobre almacenar BLOBs en Postgres que citaba otra persona. Nota que en
Postgres no existen los "blobs"; aca el equivalente es el tipo Bytea,
apocope de "byte array". Ademas el autor del articulo comete el error
de confundir eso con la interfaz de objetos grandes, que es un tema
completamente distinto.

Tu tienes que decidir cual de esas alternativas escoger. Una vez que
hayas escogido te preocupas de ver exactamente como es el codigo para
hacerlo.

--
Alvaro Herrera (<alvherre[a]alvh.no-ip.org>)
"Nunca se desea ardientemente lo que solo se desea por razón" (F. Alexandre)


From: Martín Marqués <martin(at)bugs(dot)unl(dot)edu(dot)ar>
To: pgsql-es-ayuda(at)postgresql(dot)org
Cc: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, Victor Montenegro Isidin <vhmontenegro(at)gmail(dot)com>
Subject: Re: Como puedo guardar archivos binarios en una tabla de una BD Postgresql
Date: 2005-07-22 11:44:29
Message-ID: 200507220844.29468.martin@bugs.unl.edu.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Por Dios Alvaro, si se hace (o existe) algún FAQ en español de PostgreSQL,
este mail tienen que estar ahí!!!! :-D

El Jue 21 Jul 2005 22:52, Alvaro Herrera escribió:
> On Thu, Jul 21, 2005 at 08:00:57AM -0400, Victor Montenegro Isidin wrote:
>
> > Necesito guardar en una tabla de una BD postgres archivos binarios, es
> > decir, archivos .zip .jpg .doc, etc.
> > Como puedo subirlos a una BD Postgresql (con PHP)
>
> Resumiendo todas las respuestas que dieron, tienes 4 opciones:
>
> 1. almacenar el archivo fuera de la base de datos, y almacenar solamente
> el PATH. No es mala opcion, pero necesitas un programa externo que haga
> limpieza.
>
> 2. almacenar usando "large objects".
>
> 3. almacenar usando el tipo Bytea. Ventaja: tienes que hacer una
> conversion al insertar y extraer, puesto que hay que escapar los
> caracteres "ascii 0" (NUL), backslash y otros (AFAIR el unico otro es la
> comilla simple). Alternativamente puedes usar un mecanismo que no
> necesite escapar, pero entiendo que no esta implementado en PHP.
>
> 4. almacenar usando el tipo text, codificado en base64 o algun
> equivalente. Desventaja: hay un consumo de CPU no despreciable para
> hacer la conversion (mas costosa que la alternativa 3)
>
>
> Con respecto a Bytea y Text, podria ser recomendable desactivar la
> compresion de esa columna, para ahorrar algo de CPU, dependiendo de si
> los archivos que almacenes sean muy compresibles (es una variante de
> ALTER TABLE que dice algo de "STORAGE". Lee el manual.)
>
> Con respecto a la alternativa 2, es lo que hay en un articulo que habla
> sobre almacenar BLOBs en Postgres que citaba otra persona. Nota que en
> Postgres no existen los "blobs"; aca el equivalente es el tipo Bytea,
> apocope de "byte array". Ademas el autor del articulo comete el error
> de confundir eso con la interfaz de objetos grandes, que es un tema
> completamente distinto.
>
>
> Tu tienes que decidir cual de esas alternativas escoger. Una vez que
> hayas escogido te preocupas de ver exactamente como es el codigo para
> hacerlo.
>
> --
> Alvaro Herrera (<alvherre[a]alvh.no-ip.org>)
> "Nunca se desea ardientemente lo que solo se desea por razón" (F. Alexandre)
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 8: explain analyze es tu amigo
>

--
select 'mmarques' || '@' || 'unl.edu.ar' AS email;
---------------------------------------------------------
Martín Marqués | Programador, DBA
Centro de Telemática | Administrador
Universidad Nacional
del Litoral
---------------------------------------------------------


From: Chema Cortes <chema(at)ls-l(dot)org>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Como puedo guardar archivos binarios en una tabla de una BD Postgresql
Date: 2005-07-22 12:18:18
Message-ID: 42E0E40A.4010002@ls-l.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Alvaro Herrera escribió:

> 3. almacenar usando el tipo Bytea. Ventaja: tienes que hacer una
> conversion al insertar y extraer, puesto que hay que escapar los
> caracteres "ascii 0" (NUL), backslash y otros (AFAIR el unico otro es la
> comilla simple). Alternativamente puedes usar un mecanismo que no
> necesite escapar, pero entiendo que no esta implementado en PHP.

Por si puede servirle a álguien, hice un artículo para manejar binarios
en postgres con python en el que, de paso, comparo los tres módulos más
populares que tiene python para conectar con postgres:

http://ch3m4.org/blog/index.php/py/2005/01/24/manejo_de_blobs_con_postgresql

Lo de los "escapes" es necesario cuando construyes la "query" en formato
texto; pero resulta más conveniente pasar los datos binarios como
parámetro independiente en la ejecución de la query, sin necesidad de
convertir nada. En el artículo lo explico con el módulo "psycopg" de
python; en C sería utilizando la función "PQexecParams".

Lo de usar LO ó ByteA lo pregunté por aquí hace unos meses, y la
respuesta que obtuve venía a decir que la principal ventaja de los LO es
que funciona como un fichero normal, pudiendo hacer seeks sobre éllos;
aunque su principal desventaja es que pierden fácilmente la integridad
referencial, por lo que parecen más recomendable utilizar ByteA en general.


From: Martín Marqués <martin(at)bugs(dot)unl(dot)edu(dot)ar>
To: pgsql-es-ayuda(at)postgresql(dot)org
Cc: Chema Cortes <chema(at)ls-l(dot)org>
Subject: Re: Como puedo guardar archivos binarios en una tabla de una BD Postgresql
Date: 2005-07-22 12:37:47
Message-ID: 200507220937.47434.martin@bugs.unl.edu.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

El Vie 22 Jul 2005 09:18, Chema Cortes escribió:
>
>
> Lo de usar LO ó ByteA lo pregunté por aquí hace unos meses, y la
> respuesta que obtuve venía a decir que la principal ventaja de los LO es
> que funciona como un fichero normal, pudiendo hacer seeks sobre éllos;
> aunque su principal desventaja es que pierden fácilmente la integridad
> referencial, por lo que parecen más recomendable utilizar ByteA en general.

Ahí esta el análisis del programador: ¿vas a hacer busquedas sobre los
archivos binarios?

Supongamos que vas a guardar imágenes que luego se levantan en una pagina web
(se me ocurre la foto de los usuarios). Ahí no hay busqueda que hacer.

Por otra parte, podrias tener PDFs guardados, y queres hacer una busqueda
dentro de los PDFs. Ahí tenes que accederlos?

Todo depende de lo que se necesite. :-D

--
select 'mmarques' || '@' || 'unl.edu.ar' AS email;
---------------------------------------------------------
Martín Marqués | Programador, DBA
Centro de Telemática | Administrador
Universidad Nacional
del Litoral
---------------------------------------------------------