2015-01-13 1 views
0

Для миграции я автоматически создавал скрипты, содержащие анонимные блоки для каждого объекта для обновления, и сохранял таблицу журналов для результатов.Выполнение скрипта печатает каждый «DO» из моего сценария

DO $$ 
DECLARE productId varchar; 
BEGIN 
    productId := getProductId('9783980493017'); 
    update product set ...; 
    ... 
EXCEPTION 
    WHEN OTHERS THEN 
    insert into mig_messages(createddate,identifier,message) 
    values(now(), '9783980493017', SQLERRM); 
END $$; 

Это прекрасное действие. Но когда я запускаю эти скрипты с psql, каждый раз DO печатается в подсказке. Это звучит немного глупо, но в нем много скриптов с большим количеством блоков обновления продукта (около 5 миллионов и более). Как я могу подавить этот вывод, не перенаправляя его полностью на/dev/null или переключая psql на молчание? Наконец МОЖЕТ быть некоторый вывод, который я хочу видеть (ошибки, предупреждения и т. Д.).

+1

делают ли '--quiet' параметр, что вы хотите? –

+0

@a_horse_with_no_name Does --quiet все еще печатать сообщения об ошибках? Особенно меня интересовали потерянные связи или другие «жесткие» ошибки, не создаваемые самим скриптом. –

+0

Хорошо, это так; Я пробовал это и печатал синтаксическую ошибку. Благодаря :) –

ответ

1

Я бы предварять скрипт с этой линией:

SET client_min_messages=WARNING 

Или начать psql с этой установкой в ​​среде (я использую это в Баше).

env PGOPTIONS='-c client_min_messages=WARNING' psql ... 

Таким образом, вы все равно получаете сообщения с серьезностью ПРЕДУПРЕЖДЕНИЕ или выше.
Связанный: