PostgreSQL: экспортировать полученные данные из SQL-запроса в Excel / CSV

Мне нужно экспортировать полученные данные из запроса в PostgreSQL в Excel / CSV.
Я использую PostgreSQL 8.2.11 .

 SQL error: ERROR: relative path not allowed for COPY to file In statement: COPY (select distinct(m_price) from m_product)TO '"c:\auto_new.txt"'; 

    Пример с именем файла в стиле 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. Работает в любой версии. Это все в прекрасном руководстве :

    имя файла

    Абсолютное имя пути для входного или выходного файла. Пользователям 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 для небольших запросов.

    Близкий ответ:

    • Скопировать результаты из представления PostgreSQL в одном БД на таблицу в другой

    Похожие решения для MySQL:

    • Экспорт данных MYSQL в Excel / CSV через php

    В PostgreSQL 9.4 для создания файла CSV с заголовком в Ubuntu :

     COPY (SELECT * FROM tbl) TO '/home/user/Desktop/result_sql.csv' WITH CSV HEADER; 

    Примечание. Папка должна быть доступна для записи.

    Это сработало для меня:

     COPY (SELECT * FROM table) TO E'C:\\Program Files (x86)\\PostgreSQL\\8.4\\data\\try.csv'; 

    В моем случае проблема заключалась в разрешении на запись в специальную папку (хотя я работаю администратором), после изменения пути к исходной папке данных в PostgreSQL у меня был успех.

    Несколько графических инструментов, таких как Squirrel, SQL Workbench / J, AnySQL, ExecuteQuery, могут экспортироваться в файлы Excel.

    Большинство этих инструментов перечислены в Wiki PostgreSQL:

    http://wiki.postgresql.org/wiki/Community_Guide_to_PostgreSQL_GUI_Tools

    Если у вас есть ошибка типа «ОШИБКА: невозможно открыть файл сервера» / файл «: Permission denied», вы можете исправить это:

    Произошла одна и та же проблема: это решение, которое я нашел: создать новую папку (например, tmp) в / home $ cd / home сделать postgres владельцем этой папки $ chown -R postgres: postgres tmp copy в tmp файлы, которые вы хотите записать в базу данных, и убедитесь, что они также принадлежат postgres. Вот и все. После этого вы должны быть в бизнесе.

    Правильный сценарий для postgres (Ubuntu):

     COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv'; 
    Давайте будем гением компьютера.