Подтвердить что ты не робот

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"';
4b9b3361

Ответ 1

Пример с именем файла в стиле 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:

Ответ 2

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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

COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv';