Skip site navigation (1) Skip section navigation (2)

Re: pg_dump con campos bytea

From: Diego Schulz <dschulz(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: pg_dump con campos bytea
Date: 2009-04-23 15:43:11
Message-ID: 47dcfe400904230843s3eaf3eefg8a6a76a460b0635@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
2009/4/22 Edwin Quijada <listas_quijada(at)hotmail(dot)com>:
>
> En mi BD tengo datos byeta y queria saber si al momento de sacar un backup lo puedo hacer con un dump normal para sacar los datos.
>
> Y si es asi como haria el restore ? COn psql normal.
>


Una opción para sortear este tipo de dudas es almacenar los blobs
codificados en base64 [http://es.wikipedia.org/wiki/Base64]. Tu
cliente deberá encargarse de la codificación del blob a base64, el
resultado es un string de caracteres ASCII que puedes almacenar en una
columna de tipo bytea o text. En mi caso lo hago en C++/Qt4.

Tambien puedes definir unas funciones sencillas en la base para
algunas operaciones básicas, como averiguar el tamaño del blob, el
hash md5 o sha1(requiere pgcrypto), etc. Sigues teniendo acceso al
blob decodificando la columna bytea con
decode(mi_columna_bytea::text,'base64'), inclusive puedes prescindir
del tipo bytea y almacenar tus blobs en columnas de tipo text.

Averiguar el tamaño del un blob seria algo asi como:

# select nombre, octet_length(decode(mi_blob::text,'base64')) || '
bytes' as tamanio from archivo;
   nombre          |   tamanio
-----------------------+-------------
 img033.jpg       |  65321 bytes
 dschulz.asc     |  1682 bytes
 words.txt         |  251 bytes
(3 filas)


Lo que consigues con esto es poder volcar backups en donde tus
columnas de tipo bytea contengan solamente caracteres ASCII. No se que
tan inteligente sería aplicar este enfoque cuando almacenas blobs
*realmente*  grandes. Aun considerando que codificar/decodificar
base64 parece no ser un trabajo muy intensivo, supongo que puede
implicar un problema en un ambiente donde tengas mucha carga. Mis
pruebas no dieron problemas con hasta ~50 Mb, pero en una instalación
completamente ociosa.


HTH,

diego

In response to

Responses

pgsql-es-ayuda by date

Next:From: Alvaro HerreraDate: 2009-04-23 15:53:20
Subject: Re: puede postgresql venderse??
Previous:From: Conxita MarínDate: 2009-04-23 15:37:47
Subject: Fw: puede postgresql venderse??

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group