sql >> Databáze >  >> RDS >> PostgreSQL

Uložte výstup z funkce SQL do souboru csv (COPY) s dynamickým názvem souboru

Příklad rychlého hacknutí pomocí PLPGSQL místo SQL .

Upozornění:musí být vytvořen jako superuživatel.

Nahraďte dotaz atd. ve funkci tím, co potřebujete, a do funkce můžete přidat další vstupní parametry, abyste vytvořili svůj dotaz nebo výstupní soubor(y) odlišně v závislosti na tom, jaké jsou tyto vstupní parametry.

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');

Výsledkem je soubor jako '/path/to/the/file/some_test_file_994216.csv'




  1. Vysvětlení příkazu PostgreSQL VALUES

  2. Jak vrátit opravu po neúspěšné fázi přerušení v R12.2

  3. Funkce INSTR() v Oracle

  4. Jak to_date() funguje v PostgreSQL