आपको डायनामिक SQL की आवश्यकता है :
CREATE OR REPLACE FUNCTION loaddata(filepathname text)
RETURNS void AS
$func$
BEGIN
EXECUTE format ('
COPY climatedata(
climatestationid
, date
... -- more columns
, tminsflag)
FROM %L (FORMAT CSV, HEADER)' -- current syntax
-- WITH CSV HEADER' -- tolerated legacy syntax
, $1); -- pass function parameter filepathname to format()
END
$func$ LANGUAGE plpgsql;
format()
PostgreSQL 9.1+ की आवश्यकता है।
फ़ाइल नाम को बिना अतिरिक्त सेट (बच निकले) सिंगल कोट्स के पास करें:
SELECT loaddata('/absolute/path/to/my/file.csv')
format()
%L
. के साथ फ़ाइल नाम से सुरक्षित रूप से बच निकलता है। SQL इंजेक्शन के लिए अतिसंवेदनशील होंगे इसके बिना।
एक तरफ , आपके पास एक फ़ंक्शन नाम बेमेल है:
CREATE OR REPLACE FUNCTION public.loaddata(filepathname varchar)
...
ALTER FUNCTION public.filltmaxa(character varying)