Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > PostgreSQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-01-2008
Avatar de thelibmx
thelibmx thelibmx is offline
Miembro
 
Registrado: mar 2007
Posts: 515
Poder: 18
thelibmx Va por buen camino
Question error: debe ser superusuario para utilizar lo import() en el extremo del servidor

Hola amigos estoy tratando de subir un archivo atravez de delphi2006 a una base de datos en postgre, la tabla se llama mis imagenes y tiene un campo llamado title(text) y otro picture(oid) se supone que en teoria pueden impotarse cualquier tipo de archivo pero me aparece el siguiente mensaje de error

Código SQL [-]
General SQL error.
Error while executing the query;
Error: debe ser superusuario para utilizar lo import() en el extremo del servidor
Hint:
Todos los usuarios pueden utilizar lo_import() de cliente proporcionada por libpq.

El codigo que ocupo es este:

Código Delphi [-]
Querygestion.Close;
Querygestion.SQL.Clear;
Querygestion.SQL.add('INSERT INTO misimagenes(title, picture) VALUES ('+Edit1.Text+', lo_import(''c:/algo.pdf''))');
querygestion.ExecSQL;
Querygestion.Open;

Alguna pista?
__________________
En movimiento...
Responder Con Cita
  #2  
Antiguo 23-01-2008
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
hola thelibmx,

Bueno creo que el problema es donde se ejecuta la función lo_import.

Creo que estas intentando cargar un archivo que tienes en un cliente Windows con una sentencia SQL que se ejecuta en el servidor... (generalmente el servidor es Linux)...

Lo anterior quiere decir que debes mover primero el archivo a un directorio en el servidor para guardarlo....

Creo que podrías hacer una "triquiñuela", utilizando un componente de Delphi intermedio que cargue imágenes a una BD, algo así como un TDBImage (Invisible), que apunte hacia el campo que quieres dentro de tu BD.

Yo una vez lo hice así para subir texto a un campo definido como oid.

espero que te sirva... si no es muy tarde.
Responder Con Cita
  #3  
Antiguo 23-01-2008
Avatar de thelibmx
thelibmx thelibmx is offline
Miembro
 
Registrado: mar 2007
Posts: 515
Poder: 18
thelibmx Va por buen camino
gracias, creo que si fue un poco tarde pues ya cambiamos la manera en q subimos los datos, se cambio el esquema a subir los archivos directamente al servidor, sabes necesitaba subir toda clase de archivos pero como no encontraba manera pues se tubo que cambiar, aun asi, creo que a muchos les sirvira de pista tu sugerencia, yo espero en un futuro encontrar alguna forma de hacerlo, y claro la posteare aqui de igual manera te agradezco y agradezco a todos los que apoyaron en este hilo, y pues los que sigan apoyando tambien un saludo y gracias
__________________
En movimiento...
Responder Con Cita
  #4  
Antiguo 11-09-2008
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
mmmm creo que alguien borro la respuesta en chino que habian peusto... por lo que esta respuesta pierde validez....

Última edición por gatosoft fecha: 11-09-2008 a las 22:38:44.
Responder Con Cita
  #5  
Antiguo 22-12-2008
cascarrabias cascarrabias is offline
Miembro
 
Registrado: abr 2006
Posts: 103
Poder: 18
cascarrabias Va por buen camino
Lo que yo te recomiendo en estos casos es que el campo en Postgre sea tipo 'BLOB' y que cargues tu archivo a un stream en tu aplicacion y lo pases de la siguiente manera:

Código Delphi [-]

 with zQuery1 do begin
        SQL.Add('INSERT INTO misimagenes("title","picture") VALUES('''+Edit1.text+''',:ARCHIVO);');
        ParamByName('ARCHIVO').LoadFromStream(stream,ftBlob);
        ZQuery1.ExecSQL;
        end;

Salu2
Responder Con Cita
  #6  
Antiguo 18-02-2011
Avatar de burgosrodas
burgosrodas burgosrodas is offline
Miembro
 
Registrado: sep 2008
Ubicación: Colombia
Posts: 24
Poder: 0
burgosrodas Va por buen camino
Cita:
Empezado por cascarrabias Ver Mensaje
Lo que yo te recomiendo en estos casos es que el campo en Postgre sea tipo 'BLOB'
Great !!!!

esa es la solucion, solo cabe anotar que en postgres el campo Blob es conocido como BYTEA (bueno para los que están perdidos en el mundo Postgres como alguna vez lo estuve)


Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
stream:TMemoryStream;
begin
    if fileexists('C:\Archivo.dat') then
      begin
      try
       stream:=TMemoryStream.Create;

         stream.LoadFromFile('C:\Archivo.dat');

            ZQuery1.SQL.Add('INSERT INTO temp(imagen) VALUES(:ARCHIVO);');
            ZQuery1.ParamByName('ARCHIVO').LoadFromStream(stream,ftBlob);
            ZQuery1.ExecSQL;

      finally

            stream.Free;
      end;

      end;
end;


muchas gracias por el aporte cascarrabias
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Que api debo utilizar para que mi proyecto me reconozca las funciones de ODBC para My Shidalis API de Windows 1 23-08-2005 17:35:02
A que se debe el Error... dunia_lv Impresión 3 18-03-2005 19:17:59
Windows ha detectado un error y debe cerrarse hefesta Conexión con bases de datos 13 27-07-2004 00:51:46
Procesar Archivos de Texto delimitados por TAB para luego import en Access dago_Ariza Conexión con bases de datos 1 13-05-2004 10:24:39
Export-ImporT Interbase cahosoft Firebird e Interbase 4 22-09-2003 23:39:08


La franja horaria es GMT +2. Ahora son las 14:37:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi