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"';
6 ответов
пример с именем файла в стиле 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
.
вы также можете использовать GUI как pgAdmin попробуйте и копировать / вставить из таблицы результатов в Excel для небольших запросов.
тесно связан ответ:
аналогичное решение для MySQL:
на 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 у меня был успех.
несколько инструментов GUI, таких как Squirrel, SQL Workbench/J, AnySQL, ExecuteQuery, могут экспортировать в файлы Excel.
большинство этих инструментов перечислены в вики PostgreSQL:
http://wiki.postgresql.org/wiki/Community_Guide_to_PostgreSQL_GUI_Tools
Если у вас есть ошибка, как "ошибка: не удалось открыть файл сервера "/ файл": разрешение отказано" вы можете исправить это:
пробежал через ту же проблему, и это решение, которое я нашел: Создайте новую папку (например, tmp) в разделе /home $ кд /дома сделать postgres владельцем этой папки $ Чаун -Р и Postgres:Postgres из ТМП скопировать в tmp файлы, которые вы хотите записать в базу данных, и убедитесь, что они также принадлежат и Postgres. Вот и все. После этого ты должен заняться бизнесом.
правильный скрипт для postgres (Ubuntu):
COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv';