PSQL: как я могу предотвратить любой вывод в командной строке?
Моя проблема: я пытаюсь запустить сценарий создания базы данных в командной строке через командный файл как часть процесса сборки TFS, чтобы включить ночное тестирование на известном наборе данных.
Сценарии, которые мы запускаем, выводят Уведомления, Предупреждения и некоторые Ошибки в командной строке. Я хотел бы отменить, по крайней мере, Уведомления и Предупреждения и, если возможно, Ошибки, так как они, похоже, не влияют на общий успех сценариев. Похоже, что эти выходные данные влияют на успех или неудачу процесса в том, что касается процесса сборки TFS. Он выделяет каждую строку выходных данных скриптов как ошибки и не дает сборки.
Поскольку наши системы работают на Windows, большинство потенциальных решений, которые я нашел в Интернете, не работают, так как они, похоже, нацелены на Linux.
Я изменил client_min_messages на error в файле postgresql.conf, но, глядя на ту же конфигурацию из pgAdmin (tools > server configuration), он показывает значение как Error, а текущее значение как Notice.
Все строки в пакетном файле, которые вызывают psql, также используют флаг -q, но это только мешает основам, таким как CREATE TABLE, ALTER TABLE и т. Д.
Пример строки из командного файла:
psql -d база данных -q Пример строки вывода из этой команды: ВНИМАНИЕ: столбец "identity" имеет тип "unknown". ПОДРОБНЕЕ: Все равно продолжить создание отношения. Указание файла с флагом -f не имеет значения. Я могу вручную запустить командный файл на своем компьютере разработчика, и он создает ожидаемую базу данных независимо от того, какие ошибки или сообщения отображаются в командной строке. Так что в конечном итоге мне нужно, чтобы все команды psql в моих пакетных файлах работали без вывода сообщений.
3 ответа
psql COMMAND &> output.txt
Или, используя ваш пример команды:
psql -d database -q < C:\Database\scripts\script.sql &> output.txt
Используйте флаг psql -o для отправки выходных данных команды по желаемому имени файла или /dev/null, если вас это не волнует.
Параметр -q не препятствует выводу запроса.
-q, --quiet работать тихо (без сообщений, только вывод запроса)
чтобы избежать вывода, вы должны отправить результат запроса в файл
psql -U имя_пользователя -d имя_базы_данных -pXXXX -c "SELECT * FROM имя_таблицы LIMIT 5;" > C:\test.csv
используйте 1 > : каждый раз создавать новый файл
используйте 2 >> : создаст и продолжит добавлять