Я использую PSQL \dt
для отображения всех таблиц в базе данных, и мне нужно сохранить результаты.
Каков синтаксис для экспорта результатов команды psql в файл?
postgresql
psql
pstanton
источник
источник
Ответы:
Из справки PSQL (
\?
):Последовательность команд будет выглядеть так:
источник
\o
снова выключает это.\?
не идет в файл. :(\o queries-output.txt
перенаправляет все последующие команды o / p в файл с именемqueries-output.txt
и вводит\o
(при повторной подсказке psql ) это поведение перенаправления отменяется.Команда psql
\o
уже была описана jhwist.Альтернативный подход заключается в использовании
COPY TO
команды для прямой записи в файл на сервере. Преимущество этого в том, что он создается в удобном для анализа формате по вашему выбору, а не в табличном формате psql. Это также очень легко импортировать в другую таблицу / базу данных, используяCOPY FROM
.NB! Это требует привилегий суперпользователя и будет записывать в файл на сервере .
Пример:
COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';')
Создает файл CSV с помощью ';' в качестве разделителя полей.
Как всегда, см. Документацию для деталей
источник
\copy
которая является командой postgres, может работать для любого пользователя. Не знаю, работает ли он для \ dt или нет, но общий синтаксис воспроизводится по следующей ссылке Синтаксис копирования SQL PostgresВыше сохранит выходные данные запроса select в имени файла, предоставленном в виде файла csv
РЕДАКТИРОВАТЬ:
Для моего сервера psql работает следующая команда, это более старая версия v8.5
источник
Используйте параметр o команды pgsql.
источник
COPY tablename TO '/tmp/output.csv' DELIMITER ',' CSV HEADER;
эта команда используется для хранения всей таблицы как CSVисточник
Если вы получили следующую ошибку
ufgtoolspg=> COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';') ; ERROR: must be superuser to COPY to or from a file HINT: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.
Вы можете запустить его таким образом:
psql somepsqllink_or_credentials -c "COPY (SELECT foo, bar FROM baz) TO STDOUT (format csv, delimiter ';')" > baz.csv
источник
Используйте запрос ниже, чтобы сохранить результат в CSV-файле
\ скопировать (ваш запрос) в csv заголовок 'file path';
пример
\ скопируйте (выберите name, date_order из purchase_order) в '/home/ankit/Desktop/result.csv' заголовок cvs;
Надеюсь, это поможет вам.
источник
Я предполагаю, что для этого существует какая-то внутренняя команда psql, но вы также можете запустить
script
команду из пакета util-linux-ng :источник
Этот подход будет работать с любой командой psql от самой простой до самой сложной, не требуя каких-либо изменений или корректировок исходной команды.
ПРИМЕЧАНИЕ. Для серверов Linux.
МОДЕЛЬ
ПРИМЕР
МОДЕЛЬ
sudo -u postgres psql [some_db] -c "$(cat sqlcmd)" >>sqlop 2>&1
ПРИМЕР
sudo -u postgres psql some_db -c "$(cat sqlcmd)" >>sqlop 2>&1
cat sqlop
Готово! Спасибо! = D
источник
Подход к докеру
через команду psql
или запрос из файла sql
источник