Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PostgreSQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=42)
-   -   error: debe ser superusuario para utilizar lo import() en el extremo del servidor (https://www.clubdelphi.com/foros/showthread.php?t=52253)

thelibmx 15-01-2008 19:17:20

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?

gatosoft 23-01-2008 03:13:05

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.

thelibmx 23-01-2008 06:45:11

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 :D

gatosoft 11-09-2008 19:19:49

mmmm creo que alguien borro la respuesta en chino que habian peusto... por lo que esta respuesta pierde validez....

cascarrabias 22-12-2008 11:55:42

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

burgosrodas 18-02-2011 07:22:49

Cita:

Empezado por cascarrabias (Mensaje 331796)
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


La franja horaria es GMT +2. Ahora son las 11:29:19.

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