Моя проблема: я пытаюсь запустить сценарий генерации базы данных в командной строке через командный файл как часть процесса сборки 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 в моих командных файлах запускались тихо.
Спасибо за ваш ответ, но, к сожалению, он не работает. Синтаксис в вашем примере неверен. Замена &> с -o создает выходной файл, но ничего не пишет. Затем выводит в командной строке как обычно. – Pakman
Это приводит моего коллеги, чтобы предложить 2> output.txt, и это, похоже, работает. Замена с помощью 2> nul полностью отключит весь вывод, но может быть полезно иметь журнал на всякий случай. – Pakman
Я подозреваю, что в вашем скрипте есть что-то, что вызывает это. Отправка 1> в файл отправляет STDOUT в файл и 2> отправляет STDERR в файл. Использование &> должно отправить оба. Я проверил, что это работает: psql -d database -h host -p port -U user -f test.sql &> output.txt – klob