2016-02-18 3 views
1

Моя проблема: я пытаюсь запустить сценарий генерации базы данных в командной строке через командный файл как часть процесса сборки TFS, чтобы включить ночное тестирование в известном наборе данных.PSQL: Как я могу предотвратить вывод в командной строке?

Сценарии, которые мы запускаем, выводят уведомления, предупреждения и некоторые ошибки в командной строке. Я хотел бы подавить, по крайней мере, уведомления и предупреждения, и, если возможно, ошибки, поскольку они, похоже, не влияют на общий успех скриптов. Кажется, что этот результат влияет на успех или неудачу процесса в отношении процесса сборки TFS. Он выделяет каждую строку вывода из сценариев в виде ошибок и сбоев сборки.

Поскольку наши системы работают в Windows, большинство потенциальных решений, которые я нашел в Интернете, не работают, поскольку они, похоже, нацелены на Linux.

Я изменил client_min_messages ошибки в файле postgresql.conf, но при взгляде на ту же конфигурацию из pgAdmin (инструменты> настройки сервера) он показывает значение как ошибки, но текущее значение в качестве уведомления.

Все строки в пакетном файле, которые требуют PSQL использовать флаг -q как хорошо, но это, кажется только предотвратить основы, такие как CREATE TABLE и ALTER TABLE и т.д.

Пример строки из пакетный файл:

PSQL -d база -q < C: \ Database \ сценарии \ script.sql

Пример вывода строки из этой команды:

ВНИМАНИЕ: колонка «identity» имеет тип «unknown» . ДЕТАЛИ: В любом случае, создавая отношение.

Задание файла флагом -f не имеет значения.

Я могу вручную запустить пакетный файл на моей машине разработки, и он создает ожидаемую базу данных независимо от того, какие ошибки или сообщения отображаются в командной строке.

Так что, в конечном счете, мне нужно, чтобы все команды psql в моих командных файлах запускались тихо.

ответ

0
psql COMMAND &> output.txt 

Или, используя ваш пример команды:

psql -d database -q < C:\Database\scripts\script.sql &> output.txt 
+0

Спасибо за ваш ответ, но, к сожалению, он не работает. Синтаксис в вашем примере неверен. Замена &> с -o создает выходной файл, но ничего не пишет. Затем выводит в командной строке как обычно. – Pakman

+0

Это приводит моего коллеги, чтобы предложить 2> output.txt, и это, похоже, работает. Замена с помощью 2> nul полностью отключит весь вывод, но может быть полезно иметь журнал на всякий случай. – Pakman

+0

Я подозреваю, что в вашем скрипте есть что-то, что вызывает это. Отправка 1> в файл отправляет STDOUT в файл и 2> отправляет STDERR в файл. Использование &> должно отправить оба. Я проверил, что это работает: psql -d database -h host -p port -U user -f test.sql &> output.txt – klob

0

использовать Psql -o флаг, чтобы отправить вывод команды в имени файла, который вы хотите или/DEV/нулевое значение, если вы не заботитесь об этом.

Смежные вопросы