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"';
Ответы
Ответ 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';