Re: TR: Re: TR: interface PERL and return results - Mailing list pgsql-interfaces

From victor3.lopes@voila.fr
Subject Re: TR: Re: TR: interface PERL and return results
Date
Msg-id H3T6HV$BD8FFD4099CE8EC76043D9754AD2475F@voila.fr
Whole thread Raw
Responses Re: TR: Re: TR: interface PERL and return results
List pgsql-interfaces
Hello
I have found a solution for my second problem.
Indeed is necessary to use a endcopy command when we use
a copy instruction.

The code should be  this :
$res = $db->exec('COPY temp FROM stdin');

open (FIC,'<result.res');
while (<FIC>) {
 $db->putline($_);
}
$db->putline("\\.\n");
$db->endcopy;
close(FIC);

The most important is the $db->putline("\\.\n"); with \n before use endcopy. My error had to omit this :-)
Today my copy code works fine :-)


> On Fri, Oct 11, 2002 at 12:29:40AM +0200, victor3.lopes@voila.fr wrote:
> > Hello, anyone have a response of  my problem ?
>
> Maybe. See below...
> >
> > I have try two methods for charge my result.res in my table.
> >
> > the first  method :
> >
> > $res = $db->exec(" COPY temp FROM "full path\result.res ");
> >
> > Unfortunately I did not succeed in using this method, I had always an
> > error ( While placing postgres in debug mode ).
> >
> > DEBUG:  StartTransactionCommand
> > DEBUG:  query: COPY temp FROM '-- my path -- /result.res'
> > DEBUG:  parse tree: { QUERY :command 5  :utility ?  :resultRelation 0 :into <>
> > :isPortal false :isBinary false :isTemp false :hasAggs false :hasSubLinks false :rtable
> > <> :jointree <> :rowMarks () :targetList <> :groupClause <> :havingQual <>
> > :distinctClause <> :sortClause <> :limitOffset <> :limitCount <> :setOperations <>
> > :resultRelations ()}
> > DEBUG:  ProcessUtility: COPY temp FROM '-- my path -- /result.res'
> > ERROR:  You must have Postgres superuser privilege to do a COPY directly to or from a
> > file.  Anyone can COPY to stdout or from stdin.  Psql's \copy command also works for
> > anyone.
> > ....
> >
> > I don't understand why this error because the superuser postgres (who had create for
> > launch the server) have the privilege
> > for access and read this file.
>
> In your Perl script, what user and password did you use to connect to
> the database?
Indeed my user is http and is not the superuser. In my host superuser postgresql is user postgres.

>You need to *connect* as the Postgres superuser (which is
> almost always the user named 'postgres').
>
> If you are connected as user postgres then your COPY command should
> work.
>
> --
> Robin Munn
> rmunn@pobox.com

Ok, thanks for this information, but i find it's a  pity because on all my code i use the user http for to access
tables and I do not see why it would be necessary that I connect differently to use command Copy : - ( for
access directly to my file.
Perhaps a problem of security ?

Thanks
Victor
------------------------------------------

Faites un voeu et puis Voila ! www.voila.fr



pgsql-interfaces by date:

Previous
From: rmunn@pobox.com
Date:
Subject: Re: TR: Re: TR: interface PERL and return results
Next
From: Vit Prucha
Date:
Subject: Borland builder libpg or libpg++