Обсуждение: sql copy does not work

Поиск
Список
Период
Сортировка

sql copy does not work

От
Дата:

Hi

I have a problem with the copy command. I need to write a Perl script where I copy the log files into the database.
If I use the copy following syntax in shell script it works, but I need to use it in Perl.

In shell script look like this and it works.
su - postgres -c "echo "\""copy test from '/data/20060227.out';"\"" | psql imsdb"

this is how it looks like in Perl:
system ("su - postgres -c \"echo \"\"\"copy test from \'/data/log/20060115.out\'\;\"\"\" | psql imsdb\"");

I escape always the " but then I get the following error.
copy
sh:  | psql imsdb: not found

If I try the other way around there is always an error that role c does not exist....
system ("su - postgres -c \"psql imsdb -c \"copy mss6n from '/data/20060227.out'\;\"");
psql: warning: extra command-line argument "copy" ignored
psql: FATAL:  role "-c" does not exist

If I try to use copy with the -c option I always get an error that role -c does not exist.
Anyone has any idea why?
I was searching in the knowledge database and docs for this error but I can not find anything.

Many thanks
Aniko

Re: sql copy does not work

От
"Guido Barosio"
Дата:
Not the real solution for your problem, but if you are already using perl, then why not give a try to Pg?

http://search.cpan.org/search?query=Pg&mode=all

Regards,
G.-

On 3/2/06, Aniko.Badzong@swisscom.com <Aniko.Badzong@swisscom.com > wrote:

Hi

I have a problem with the copy command. I need to write a Perl script where I copy the log files into the database.
If I use the copy following syntax in shell script it works, but I need to use it in Perl.

In shell script look like this and it works.
su - postgres -c "echo "\""copy test from '/data/20060227.out';"\"" | psql imsdb"

this is how it looks like in Perl:
system ("su - postgres -c \"echo \"\"\"copy test from \'/data/log/20060115.out\'\;\"\"\" | psql imsdb\"");

I escape always the " but then I get the following error.
copy
sh:  | psql imsdb: not found

If I try the other way around there is always an error that role c does not exist....
system ("su - postgres -c \"psql imsdb -c \"copy mss6n from '/data/20060227.out'\;\"");
psql: warning: extra command-line argument "copy" ignored
psql: FATAL:  role "-c" does not exist

If I try to use copy with the -c option I always get an error that role -c does not exist.
Anyone has any idea why?
I was searching in the knowledge database and docs for this error but I can not find anything.

Many thanks
Aniko




--
/"\   ASCII Ribbon Campaign  .
\ / - NO HTML/RTF in e-mail  .
X  - NO Word docs in e-mail .
/ \ -----------------------------------------------------------------

Re: sql copy does not work

От
"Jason Minion"
Дата:
You probably need to add escaped slashes into your perl string to escape the quotes on the command line. Maybe try:
 
system ("su - postgres -c \"echo \"\\\"\"copy test from \'/data/log/20060115.out\'\;\"\\\"\" | psql imsdb\"");

Jason Minion


From: pgsql-admin-owner@postgresql.org [mailto:pgsql-admin-owner@postgresql.org] On Behalf Of Aniko.Badzong@swisscom.com
Sent: Thursday, March 02, 2006 8:17 AM
To: pgsql-admin@postgresql.org
Subject: [ADMIN] sql copy does not work

Hi

I have a problem with the copy command. I need to write a Perl script where I copy the log files into the database.
If I use the copy following syntax in shell script it works, but I need to use it in Perl.

In shell script look like this and it works.
su - postgres -c "echo "\""copy test from '/data/20060227.out';"\"" | psql imsdb"

this is how it looks like in Perl:
system ("su - postgres -c \"echo \"\"\"copy test from \'/data/log/20060115.out\'\;\"\"\" | psql imsdb\"");

I escape always the " but then I get the following error.
copy
sh:  | psql imsdb: not found

If I try the other way around there is always an error that role c does not exist....
system ("su - postgres -c \"psql imsdb -c \"copy mss6n from '/data/20060227.out'\;\"");
psql: warning: extra command-line argument "copy" ignored
psql: FATAL:  role "-c" does not exist

If I try to use copy with the -c option I always get an error that role -c does not exist.
Anyone has any idea why?
I was searching in the knowledge database and docs for this error but I can not find anything.

Many thanks
Aniko

Re: sql copy does not work

От
Дата:
Hi Jason
 
You are a genius:-)) It worked....
I am fighting with it since a week...
Thank you so much.
 
Regards
Aniko


From: Jason Minion [mailto:jason.minion@sigler.com]
Sent: Thursday, March 02, 2006 3:49 PM
To: Badzong Aniko, FX-IT-SDY-CIA-MSG; pgsql-admin@postgresql.org
Subject: RE: [ADMIN] sql copy does not work

You probably need to add escaped slashes into your perl string to escape the quotes on the command line. Maybe try:
 
system ("su - postgres -c \"echo \"\\\"\"copy test from \'/data/log/20060115.out\'\;\"\\\"\" | psql imsdb\"");

Jason Minion


From: pgsql-admin-owner@postgresql.org [mailto:pgsql-admin-owner@postgresql.org] On Behalf Of Aniko.Badzong@swisscom.com
Sent: Thursday, March 02, 2006 8:17 AM
To: pgsql-admin@postgresql.org
Subject: [ADMIN] sql copy does not work

Hi

I have a problem with the copy command. I need to write a Perl script where I copy the log files into the database.
If I use the copy following syntax in shell script it works, but I need to use it in Perl.

In shell script look like this and it works.
su - postgres -c "echo "\""copy test from '/data/20060227.out';"\"" | psql imsdb"

this is how it looks like in Perl:
system ("su - postgres -c \"echo \"\"\"copy test from \'/data/log/20060115.out\'\;\"\"\" | psql imsdb\"");

I escape always the " but then I get the following error.
copy
sh:  | psql imsdb: not found

If I try the other way around there is always an error that role c does not exist....
system ("su - postgres -c \"psql imsdb -c \"copy mss6n from '/data/20060227.out'\;\"");
psql: warning: extra command-line argument "copy" ignored
psql: FATAL:  role "-c" does not exist

If I try to use copy with the -c option I always get an error that role -c does not exist.
Anyone has any idea why?
I was searching in the knowledge database and docs for this error but I can not find anything.

Many thanks
Aniko