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
Views: Raw Message | Whole Thread | Download mbox | Resend email
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

Browse pgsql-es-ayuda by date

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