null

Экспорт таблицы из базы данных в CSV

Возникла у меня следующая задача: нужно сделать SELECT из базы данных и отправить результатирующую таблицу в CSV файл. Вопросов о том как написать запрос у меня не возникло. Я задался вопросом: "Какой самый простой способ сохранить это в CSV файл?".  Не желая напрягаться я сразу определил свой запрос в просторы интернета следующим образом: "postgresql export table to csv".  Мне казалось что такая возможность должна быть встроена в базу данных. Конечно такой функционал там есть. В postgres есть встроенная функция COPY. Давайте посмотрим её синтаксис.

 

COPY имя_таблицы [ ( имя_столбца [, ...] ) ]
    FROM { 'имя_файла' | PROGRAM 'команда' | STDIN }
    [ [ WITH ] ( параметр [, ...] ) ]

COPY { имя_таблицы [ ( имя_столбца [, ...] ) ] | ( запрос ) }
    TO { 'имя_файла' | PROGRAM 'команда' | STDOUT }
    [ [ WITH ] ( параметр [, ...] ) ]

    FORMAT имя_формата
    OIDS [ boolean ]
    FREEZE [ boolean ]
    DELIMITER 'символ_разделитель'
    NULL 'маркер_NULL'
    HEADER [ boolean ]
    QUOTE 'символ_кавычек'
    ESCAPE 'символ_экранирования'
    FORCE_QUOTE { ( имя_столбца [, ...] ) | * }
    FORCE_NOT_NULL ( имя_столбца [, ...] )
    FORCE_NULL ( имя_столбца [, ...] )
    ENCODING 'имя_кодировки'

 

Функция COPY служит для копирования результата запроса в файловую систему и наоборот. Он поддерживает форматы TEXT, CSV, BINARY. В общем, достаточно полезная функция с которой я советую вам подробнее ознакомиться (например здесь). Я же ограничусь примером как выгрузить результат SELECT в CSV с сохранением заголовка таблицы.

 

COPY (/*Ваш SELECT * from something или что-то посложнее*/) TO '/path/to/file.csv' WITH CSV DELIMITER ';' HEADER;

 

Мне кажется дальнейшие разъяснения тут излишни. На этом, пожалуй, откланяюсь!

Вперед