On 08/12/2016 07:11 AM, Edmundo Robles wrote:
Hi! I hope you could help me... I tried to generate the next copy instruction in a function: copy tablefoo (id_foo, foo_name, foo_lastname, foo_age) FROM stdin DELIMITER as '|' ; 12060157|John|Doe|33 \. ** The commands to generate the copy are: CREATE OR REPLACE FUNCTION insert_tablefoo(id integer, name varchar, lastname varchar, age integer) ... declarations ... qry=format('copy tablefoo (id_foo, foo_name, foo_lastname, foo_age) FROM stdin DELIMITER as '||chr(39) || '|' || chr(39) || ';' || chr(13) ||'%s|%s|%s|%s' || chr(13) || '\.',id,name,lastname,age); execute(qry); ... more declarations end <- end function, returns an integer. ** then, i call the function: select insert_tablefoo(12321,'John','Doe',33); **and get the next error: ERROR: syntax error at or near "12321" LINE 2: 12321|John|Doe|33 ********** Error ********** after many tests, the problem is concatenate the newline, because if the instruction generated is copied to a file and insert manually the newline the query works well. i tried with chr(10), '\n', '\r', split the qry string ( execute qry_copy || E'\\n' || qry_data || E'\\n\\.') but always get the same error :( ERROR: syntax error at or near "12321" SQL state: 42601 ** By the way, i tried to replace an insert with copy because the insert takes more than 3 minutes to insert a single record.
The above seems to be the real problem. Can you describe more what you are doing when you INSERT?
Regards and thanks in advance.
-- 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