如何让psql恢复SQL备份时仅显示错误与通知?
优化psql恢复备份时的输出(仅保留错误/必要通知)
需求说明
使用psql恢复SQL备份时,希望只显示错误信息(如下例),过滤掉SET、表创建/修改确认、行计数等冗余输出:
ERROR: relation "testing" does not exist
LINE 1: select * from testing
^
替代原有grep方案的更优方法
原有通过grep -v过滤关键词的方案存在误过滤风险(比如错误信息中若包含关键词会被误删),且需要持续维护正则表达式。推荐直接利用psql自身的输出控制参数,更可靠高效:
方案1:直接丢弃正常输出,仅保留错误
使用-o /dev/null参数将所有标准输出(冗余内容)定向到空设备,错误信息会通过stderr保留并输出:
psql -U postgres -d $dbName -o /dev/null -f /tmp/${backupFile}
方案2:进一步减少非必要提示(安静模式)
如果需要去掉psql的欢迎信息、命令结束提示等额外内容,可添加-q(安静模式)参数:
psql -U postgres -d $dbName -q -o /dev/null -f /tmp/${backupFile}
方案优势
- 避免误过滤:无需依赖文本匹配,直接区分正常输出与错误输出,不会误删包含特定关键词的错误信息
- 无需维护正则:不用随着备份内容变化添加新的过滤关键词
- 性能更优:减少了grep进程的开销
内容的提问来源于stack exchange,提问作者Nux
相关产品推荐
相关产品推荐

