У меня есть клиентский хост Windows, который хотел бы подключиться к базе данных Postgres, выдать запрос выбора и вернуть этот запрос на хост Windows в виде файла CSV.
Я знаю, что у Postgres есть команда копирования, которая будет работать.
copy (SELECT * from foo) To '/tmp/forDavid.csv' with CSV DELIMITER ',';
И этот клиент будет получать доступ к этому запросу SELECT ежедневно. Клиентский хост Windows и база данных Postgres находятся во внутренней сети.
Я хочу избежать использования PHPMyAdmin, потому что он не сообразителен, я хочу, чтобы это было как можно проще. Я знаю Perl, но это потребует установки Perl на клиентском компьютере с Windows, чего я не хочу делать.
Какое решение этой задачи было бы наиболее простым?
Что вам нужно здесь сделать, так это использовать COPY ... TO STDOUT
форма COPY, а затем захватить вывод, а затем захватить вывод в вашей локальной системе или приложении и записать его в свой локальный файл. Простой пример с использованием psql из командной строки (без использования psql \copy
материал, и нет необходимости устанавливать разделитель на запятую, поскольку это значение по умолчанию для вывода CSV):
psql -U ejones -h remote_host.com -c "COPY (SELECT * FROM foo) TO STDOUT CSV;" somedb > /tmp/forDavid.csv