On 08/28/2015 08:32 AM, Dominik Czarnota wrote:
I am launching it from postgres plpythonu function (postgres version:
PostgreSQL 9.4.4 on x86_64-unknown-linux-gnu, compiled by gcc (Debian
4.9.2-10) 4.9.2, 64-bit).
The error can be reproduced using the SQL below:
DROP TABLE IF EXISTS test;
CREATE TABLE test(field1 integer, field2 integer);
CREATE OR REPLACE FUNCTION example() RETURNS VOID AS
$$
plpy.execute("COPY test (field1, field2) FROM STDIN
DELIMITER',';\n1,2\n\\.")
$$ LANGUAGE 'plpythonu';
select example();
Maybe there is a way to get into the underlying psycopg2 driver and call
some method that would do COPY FROM, but I can't find anything related
to it in the docs.
plpythonu does not use psycopg2. When I run your test code on 9.4.4 I get:
aklaver@test=> select example();
ERROR: spiexceptions.SyntaxError: syntax error at or near "1"
LINE 2: 1,2
^
QUERY: COPY test (field1, field2) FROM STDIN DELIMITER',';
1,2
\.
CONTEXT: Traceback (most recent call last):
PL/Python function "example", line 2, in <module>
plpy.execute("COPY test (field1, field2) FROM STDIN
DELIMITER',';\n1,2\n\\.")
PL/Python function "example"
It is a similar error, but it is not coming from psycopg2, so I am still
not sure how you got the error below?
2015-08-28 17:15 GMT+02:00 Adrian Klaver <adrian.klaver@xxxxxxxxxxx
<mailto:adrian.klaver@xxxxxxxxxxx>>:
On 08/28/2015 05:58 AM, Dominik Czarnota wrote:
Hello,
Is there any possibility to make COPY from list of records in
PLPythonU?
I've tried to simply call `plpy.execute(query)` with such query:
COPY table (field1, field2, field3) FROM STDIN DELIMITER',';
val1,val2,val3
\.
But it fails with not so explicit error:
ProgrammingError: (psycopg2.ProgrammingError)
spiexceptions.SyntaxError:
syntax error at or near "val1"
LINE 2: val1,val2,val3
^
The above is a psycopg2 error, so where are you running this and how?
However the same thing works in psql.
After some googling I found out that it doesn't work inside sql
functions because there is no STDIN (
http://www.postgresql.org/message-id/000501c5acc9$83747aa0$0501a8c0@plexus
).
I've got working solution which was saving tmp file and then calling
`COPY table FROM 'path'` but that's not cool.
Did I miss something in plpythonu api? If not, where can I post
"feature
request" for that?
Or can you point me place where I could dig into the code and
implement it?
----
Dominik Czarnota
--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx <mailto:adrian.klaver@xxxxxxxxxxx>
--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx
--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general