sql >> Database teknologi >  >> RDS >> PostgreSQL

Gem output fra sql-funktion til csv-fil (COPY) med dynamisk filnavn

Et hurtigt hacket eksempel ved hjælp af PLPGSQL i stedet for SQL .

Advarsel:skal oprettes som en superbruger.

Erstat forespørgslen osv. i funktionen til det, du har brug for, og du kan tilføje flere inputparametre til funktionen for at oprette din forespørgsel eller outputfil(er) forskelligt afhængigt af, hvad disse inputparametre er.

CREATE OR REPLACE FUNCTION copy_out_example ( p_path TEXT, p_filename_prefix TEXT, OUT file_and_path TEXT )
RETURNS TEXT AS
$func$
DECLARE
    qry TEXT;
BEGIN
    file_and_path := RTRIM(p_path,'/') || '/' || p_filename_prefix || '_' || ceil(random() * 1000000)::TEXT || '.csv';

    qry := FORMAT('COPY (select * from pg_catalog.pg_class) TO %L CSV HEADER',file_and_path);
    EXECUTE qry;
END;
$func$ LANGUAGE plpgsql STRICT SECURITY DEFINER;

SELECT copy_out_example('/path/to/the/file','some_test_file');

Resulterer i en fil som '/path/to/the/file/some_test_file_994216.csv'




  1. Praktisk processorvalg til SQL Server 2014/2016 OLTP-arbejdsbelastninger

  2. Sådan viser du samlingen af ​​en database i MySQL

  3. REPLACE() Funktion i Oracle

  4. PostgreSQL Management og Automation med ClusterControl