psql COPY: сохранить результат запроса в CSV с заголовком

Категория: Postgresql · Язык: Bash · Обновлено:

Для CSV результата произвольного SELECT используйте psql \copy с запросом в скобках. Команда выполняется на клиенте, поэтому путь к файлу доступен локальному пользователю, а не серверу PostgreSQL.

Рабочий пример

Bash
psql \"$DATABASE_URL\" -c \"\\\\copy (SELECT id, created_at FROM orders WHERE created_at >= DATE '2026-10-01') TO 'orders.csv' WITH (FORMAT csv, HEADER true)\"

\copy читает и пишет файлы на клиенте, в отличие от SQL COPY, который работает на сервере и требует серверных прав на путь. HEADER добавляет первую строку с именами столбцов.

Частый вопрос

Как экспортировать данные в stdout?

Укажите TO STDOUT в \copy; вывод можно перенаправить в файл или передать в другой процесс.