Ver Mensaje Individual
  #1  
Antiguo 28-05-2004
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Reputación: 21
gatosoft Va camino a la fama
Unhappy Large Objects en PostgreSQL


Bueno, antes que nada, me disculpo si este no es el lugar apropiado para poner un Hilo sobre PostgreSQL, pero decidi ponerlo aqui por ser MySQL el hermano gemelo de PostgreSQL.

Me gustaria saber como puedo insertar en una tabla un campo de texto grande (Large Object o BLOB).

En la documentación de postgreSQL encuentro:
----------------------------------------------------------
CREATE TABLE image (
name text,
raster oid
);

INSERT INTO image (name, raster)
VALUES ('beautiful image', lo_import('/etc/motd'));

SELECT lo_export(image.raster, '/tmp/motd') FROM image
WHERE name = 'beautiful image';

--------------------------------------------------------------------------------


No tengo problemas haciendo un select, pues una vez en la base de datos, se puede manipualr bien el OID, sin embargo para insertar un campo tengo dificultades por que el servidor es linux y los clientes trabajan en Windows. no puedo hacer el lo_import, mientras los datos esten en el cliente.



Intente probando un TDBDEMO y me funciono, porque el usuario entra el texto en el componente y al darle post, lo guarda en el servidor.



Pero ...¿si no quiero utilizar el TDBDEMO sino enviar el texto como un parametro de la consulta?


Para eso hice algo parcedio a esto:

zQuery1.close;
zQuery1.sql:text:='Insert into tabla (campo1, campo2, campo3) values (valor_campo1, valor_campo2, arametro_blob)';
zQuery1.parambyname('parametro_blob').asblob:=Texto_grande;
zQyuery1.ExecSql;

Pero me sale un "parse error", y me muestra el texto que se envio como parametro. por ejemplo si el texto contien: "Las rosas son muy bonitas", el error que me sale es:

Parse error near 'las rosas son muy bonitas'


Pense en mis amigos que trabajan en Visual Basic y de inmediato pensé en una chapuza: crear u ocultar un TDBMemo y utilizarlo como puente cada vez que vaya a insertar un Large object.... pero como dije... fué inspirado en mis compañeros programadores de visual basic.


Les agradezco si me pueden orientar

Última edición por gatosoft fecha: 28-05-2004 a las 18:35:07.
Responder Con Cita