sql >> Database >  >> RDS >> PostgreSQL

Bewaar uitvoer van sql-functie naar csv-bestand (COPY) met dynamische bestandsnaam

Een snel gehackt voorbeeld met behulp van PLPGSQL in plaats van SQL .

Waarschuwing:moet worden aangemaakt als superuser.

Vervang de query enz. in de functie door wat u maar nodig hebt, en u kunt meer invoerparameters aan de functie toevoegen om uw query of uitvoerbestand(en) anders te maken, afhankelijk van wat die invoerparameters zijn.

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

Resultaten in een bestand zoals '/path/to/the/file/some_test_file_994216.csv'




  1. Manieren om toegang te krijgen tot Oracle Database in PostgreSQL

  2. SET-operators in SQL

  3. Bereik hiërarchie, ouder-kindrelatie op een effectieve en gemakkelijke manier

  4. SQL Server-query - groepsgewijze vermenigvuldiging