PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Запазете изхода от sql функция в csv файл (COPY) с динамично име на файл

Бързо хакнат пример с помощта на PLPGSQL вместо SQL .

Предупреждение:трябва да бъде създаден като суперпотребител.

Заменете заявката и т.н. във функцията с каквото ви е необходимо и можете да добавите още входни параметри към функцията, за да създадете заявката или изходния файл(и) по различен начин в зависимост от това какви са тези входни параметри.

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

Резултатът е файл като '/path/to/the/file/some_test_file_994216.csv'




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как make_interval() работи в PostgreSQL

  2. Как да форматирате числата като валута в PostgreSQL

  3. Сложно ограничение на външния ключ в SQLAlchemy

  4. Настройки на множество центрове за данни с PostgreSQL

  5. Postgres - Преобразувайте списъка на съседство във вложен JSON обект