当SQL文件中某SQL报错时,停止执行接下来的SQL

介绍

当使用Greenplum构架数仓时,经常需要一个SQL文件执行多个SQL,所以需要关注任何SQL的报错,这时ON_ERROR_STOP参数就可以使用。
如果ON_ERROR_STOP参数设置后,当SQL文件中的任何SQL报错后,就会停止执行接下来的SQL。
例如:

cat sample_test.sql
/set ON_ERROR_STOP on
select * from t1;
select * from t2;
select * from t23;
select * from t1;
/unset ON_ERROR_STOP

当你从SQL文件中执行SQL时,psql会返回下面的退出状态。

  • 0:如果SQL正常执行完成
  • 1:如果发生严重的错误(内存溢出,文件没发现)
  • 2:如果连接服务器失败
  • 3:当ON_ERROR_STOP参数设置后,SQL文件中的任何一个SQL报错后。

psql提供-f选项执行SQL文件,当发生错误时,有两种方法停止执行,并退出执行。

  • 在命令行包含-v ON_ERROR_STOP=ON
  • 在SQL文件中设置ON_ERROR_STOP参数

例子

sample_sql.sql

\set ON_ERROR_STOP on
select * from t1;
select * from t2;  -- This table is does not exists in the database so psql will stop execution at this point
select * from t23;  
select * from t1;
\unset ON_ERROR_STOP

如果不添加ON_ERRO_STOP参数,当报错后,也会继续执行。
也可以在命令行设置ON_ERROR_STOP参数

psql -d template1 -h <hostname> -v ON_ERROR_STOP=ON -f '/home/gpadmin/sample_test.sql'
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值