Re: How use input parameter as path to COPY in function? - Mailing list pgsql-general

From Tom Lane
Subject Re: How use input parameter as path to COPY in function?
Date
Msg-id 21110.1259208185@sss.pgh.pa.us
Whole thread Raw
In response to How use input parameter as path to COPY in function?  (Bill Todd <pg@dbginc.com>)
Responses Re: How use input parameter as path to COPY in function?  (Bill Todd <pg@dbginc.com>)
List pgsql-general
Bill Todd <pg@dbginc.com> writes:
> I am missing something basic. How can I  use an input parameter as the
> destination path in a COPY statement in a function.

plpgsql can only substitute parameter values into places where a data
value is called for in a DML statement (ie, SELECT/INSERT/UPDATE/DELETE).
To use a parameter in other contexts, such as a utility statement like
COPY, you need to construct the command as a string and EXECUTE it.
Try something like

   EXECUTE 'copy dvd.genre to ' || quote_literal(export_path) ||
    $q$
     with
     delimiter as E'\t'
     null as ''
    $q$ ;

(There's any number of ways to do the quoting here, of course,
but I do strongly recommend using quote_literal() on the parameter.)

            regards, tom lane

pgsql-general by date:

Previous
From: Bill Todd
Date:
Subject: How use input parameter as path to COPY in function?
Next
From: Craig Ringer
Date:
Subject: Wiki page on vacuum full