Det er ikke muligt med SQL COPY
kommando. COPY
kun kopier fra en fil eller STDIN .
Du kan enten skrive indholdet af variablen til en fil eller overføre den via STDIN. Giver kun mening for mere end et par rækker.
Jeg tror, jeg misforstod dit spørgsmål før opdateringen, du behøver sandsynligvis ikke dette:
Filstien kan ikke udveksles som andre dataelementer, og du kan ikke bruge en forberedt erklæring til det. Byg helheden sætning, før den udføres eller ty til dynamisk SQL med en server-side funktion som:
CREATE OR REPLACE FUNCTION f_cp(_file text)
RETURNS void AS
$BODY$
BEGIN
EXECUTE format($$COPY zip_codes FROM %L DELIMITER ',' CSV$$, $1);
END
$BODY$
LANGUAGE plpgsql;
Ring til:
SELECT f_cp('/var/lib/postgres/sync/myfile.csv')
format()
kræver Postgres 9.1 eller nyere.