1. 问题描述
最近某个表没有增量的数据,出现了问题, 于是调出日志,定位问题,结果是临时表中增量条件多了个and(大意多填了),
后来在拼接sql的时候,多一个and,导致增量sql没有执行成功,报了如下异常:
java.sql.SQLSyntaxErrorException: ORA-00936: missing expression
最致命的是 这里没有邮件通知到,之前考虑到这部分是手动配置,插入临时表的,配完之后,跑一下没问题就行。就没有考虑容错。现在必须要考虑了,人都有犯错误的时候,在不知不觉中。
2.解决方案
之前想用正则匹配一下,拼接好的Sql,不符合标准,就发邮件通知。后来就投机取巧用了现在的方法,先解决问题。就是在Sql执行的时候,判断执行完的状态,0为成功,其他为失败,发送邮件通知。部分代码如下:
######SQOOP数据采集异常邮件
if [ $v_state -eq 0 ];
then
echo "Sqoop数据采集成功"
else
sh /home/tomcat/script/oracle_ods/job_kettle_send_mail.sh "SQOOP数据采集异常:$V_SHELL_NAME" "表名:$V_MBBM"
fi
后续数据也会搬到基于DataX二次开发的数据开发平台,现在这个平台确实有些地方还是不够完善。