Пример с именем файла в стиле Unix:
COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv' format csv;
Прочтите руководство о COPY
(ссылка на версию 8.2).
Вы должны использовать абсолютный путь для целевого файла. Не забудьте заключить в кавычки имена файлов с пробелами. Пример для MS Windows:
COPY (SELECT * FROM tbl)
TO E'"C:\\Documents and Settings\\Tech\Desktop\\myfile1.csv"' format csv;
В PostgreSQL 8.2 , с standard_conforming_strings = off
по умолчанию, вам необходимо удвоить обратную косую черту, поскольку \
является специальным символом и интерпретируется PostgreSQL. Работает в любой версии. Это все в прекрасном руководстве :
имя файла
& emsp; Абсолютный путь к файлу ввода или вывода. Пользователям Windows может потребоваться использовать строку E''
и двойные обратные слеши, используемые в качестве разделителей пути.
Или современный синтаксис с standard_conforming_strings = on
(по умолчанию начиная с Postgres 9.1):
COPY tbl -- short for (SELECT * FROM tbl)
TO '"C:\Documents and Settings\Tech\Desktop\myfile1.csv"' (format csv);
Или вы можете также использовать косую черту для имен файлов в Windows.
Альтернативой является использование мета-команды \copy
терминального клиента по умолчанию psql
.
Вы также можете использовать графический интерфейс, например pgadmin и копировать / вставлять из таблицы результатов в Excel для небольших запросов.
Тесно связанный ответ:
Аналогичное решение для MySQL: