各位好,我是新手,想写一个shell,里面封装了几句impala是sql语句,但是sql语句很多,我想用shell判断下,如果sql执行错误就返回一个 error,然后程序跳出!写一个这样的模板! 做以后开发用!
大体思路就是:
impala-shell -q "select * from first_on_internet where day==1 ;"
if [ 如果上买到sql语句报错(如返回 ERROR: AnalysisException:),则就打印 sql error 并且跳出shell,后面sql不执行,否则执行到最后一步打印 sql succell ]
then
echo " sql ERROR ! ERROR: AnalysisException: "
else
echo "sql success ! "
fi
sql执行完会打印被修改的条数,如果条数为0则表示失败
ERROR: AnalysisException: 的错!
脚本是这样的
[root@dmniqf]# cat test_sh.sh
#!/usr/bin/env python
impala-shell -q "select * from first_on_internet where day==1 ;"
if [ "$?"= "0" ]
then
echo " sql ERROR ! ERROR: AnalysisException: "
else
echo "sql success ! "
fi
[root@dmp165 ningqf]# sh test_sh.sh
Starting Impala Shell without Kerberos authentication
Connected to dmp165:21000
Server version: impalad version 2.2.0-cdh5 RELEASE (build 2ffd73a42efd521362ffe1cfb37463f67f75c)
Query: select * from first_on_internet where day==1
ERROR: AnalysisException: Syntax error in line 1:
select * from first_on_internet where day==1 ** -- 这块是我特意写错的sq**l
^
Encountered: =
Expected: CASE, CAST, EXISTS, FALSE, IF, INTERVAL, NOT, NULL, TRUE, IDENTIFIER
CAUSED BY: Exception: Syntax error
Could not execute command: select * from first_on_internet where day==1
test_sh.sh: line 10: [: 1=: unary operator expected
sql success !
if [[ $? == 1 ]];then
echo 'sql error'
exit 1
else
echo "sql success ! "
fi
在shell上直接执行sql,执行成功返回值为0,执行失败返回值为1.当返回值为1的时候退出shell脚本即可
具体的你可以先验证一下。
如果是跳过而不是跳出,该如何写?