--1) Normal SQL command COPY FROM and TO functionalities. CREATE TABLE tbl (a int); INSERT INTO tbl VALUES(generate_series(1,1000)); COPY tbl TO '/home/kiran/tbl.txt'; CREATE TABLE tbl1 (a int); COPY tbl1 FROM '/home/kiran/tbl.txt'; DELETE FROM tbl1; DROP TABLE tbl; DROP TABLE tbl1; --2) In side SPI [plpgsql function], SQL command COPY FROM and TO functionalities. CREATE TABLE tbl (a int); INSERT INTO tbl VALUES(generate_series(1,1000)); CREATE OR REPLACE FUNCTION public.copy_to_tbl() RETURNS integer LANGUAGE plpgsql AS $function$ DECLARE r int; BEGIN COPY tbl TO '/home/kiran/tbl.txt'; get diagnostics r = row_count; RETURN r; end; $function$; SELECT copy_to_tbl(); CREATE TABLE tbl1 (a int); CREATE OR REPLACE FUNCTION public.copy_from_tbl() RETURNS integer LANGUAGE plpgsql AS $function$ DECLARE r int; BEGIN COPY tbl1 FROM '/home/kiran/tbl.txt'; get diagnostics r = row_count; RETURN r; end; $function$; SELECT copy_from_tbl(); DELETE FROM tbl1; DROP FUNCTION public.copy_from_tbl(); DROP FUNCTION public.copy_to_tbl(); DROP TABLE tbl; DROP TABLE tbl1;