首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >永远离不开的小工具

永远离不开的小工具

作者头像
一猿小讲
发布2019-08-16 17:02:44
3940
发布2019-08-16 17:02:44
举报
文章被收录于专栏:一猿小讲一猿小讲

线上应用程序升级,需要把缺失的数据关联补充一下,你写个程序处理一下?

客户信息同步,由于是线上敏感字段都是加密处理,所以需要你再写个程序解密处理一下?

曾记得 N 年前,我经常干这种事情,码这种代码。今天回过头来,对此类事情简单做一个分享,以防你们也遇到此类问题,不妨拿去实践一下,说不定会提高效率呢。

01

说思路

其实上图已经把问题解决思路,简单明了化了,还是再重复解释一下。

首先要写一个 Java Main 函数, 接收应用执行所需的参数,例如:数据库连接 URL、用户名、密码;待更新数据的时间等等。

然后需要提供一个触发 shell 脚本,术业有专攻,考虑到运维同事在线上操作的方便,一键便可运行。

思路清晰之后,其实写数据处理的程序一点都不难。

数据处理程序最基本、最简单的写法可以用 JDBC;略显牛掰的可以用 MyBatis,程序写完部署到线上时只需要编译后的 class 文件;另外程序需要引入数据库相关类库(jar 包)以及用到的三方类库;偶尔会接到结合源数据 srcData 来处理线上数据的需求场景。

所以线上发布的 package 大致如下:

classes 用于存放编译之后的数据处理程序
lib     用于存放数据库相关jar包以及三方类库等
notifyDataUpdate.sh 用于触发数据处理程序的脚本
srcData.txt 源数据(偶尔会解析源数据入库更新等操作)

02

讲实现

上面已经说过,写数据处理的程序一点都不难,这个小儿科的东西,也不是咱们今天分享的重点(不懂的,问一问度娘,度娘会告诉你一大堆)。

接下来咱们还是重点聊一聊,如何编写触发数据处理程序的 shell 脚本吧,一言不合,直接抛代码。

#!/usr/bin/ksh
LANG=zh_CN
export LANG
echo "----------" `date` "--------"
cd /usr/app/p2pDataUpdate

# do business
APP_BASE=/usr/app/p2pDataUpdate
LIB_BASE=$APP_BASE/lib

CLASSPATH=./:./classes
CLASSPATH=$CLASSPATH:$LIB_BASE/db2jcc_license_cu.jar
CLASSPATH=$CLASSPATH:$LIB_BASE/db2jcc.jar

export CLASSPATH

java P2PDataUpdate jdbc:db2://localhost:50000/dev username userpwd /usr/app/p2pDataUpdate

仔细看的你们,应该发现很简单,就是进入应用目录,然后配置 CLASSPATH,最后运行 java Main 再加上参数。

这样运维同事在线上操作时,就无需关注数据处理 Java 程序这些东东啦,直接运行 shell 脚本就 ok 了,术业有专攻,那么运维遇到 shell 脚本,应该是最亲热不过了。

03

写最后

分享了个简单的数据处理工具,如果我们再配上一个 crontab 定时调度 shell 脚本,那么就可以解决业务数据定期同步的场景啦(这个场景用的也比较多)。如果不知道怎么配合crontab,那么请回头看一下以前分享的《一篇文章讲透线上应用监控》这篇文章。

为了让你们轻松玩转上面这款工具,最后再分享一些经验(躺过的坑)吧。

经验一:shell脚本中的空格如何去除?

sed -i 's/\r$//' XXXX.sh

经验二:shell 脚本中如何传入当前的日期?

LD=`perl -MPOSIX -le 'print strftime "%Y-%m-%d", localtime(time()-86400);'`
echo LD=${LD}
java P2PDataUpdate jdbc:db2://localhost:50000/dev username userpwd ${LD}

经验三:如何修改 Linux 的时区?

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

经验四:如果数据创建时间 intime 字段有索引,注意下面的拼接才会走索引呦

intime>='2012-04-01-00.00.00.000000' and intime<='2012-04-30-23.59.59.999999'

希望今天的简单分享,能帮助你们提高工作的效率,腾出更多时间去喝咖啡。

今天的分享就到这儿吧,如果你们感觉稍微有点意思,不用赞赏,就点击右下角的“在看”,或者多多分享转发给你们的朋友就很感激。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一猿小讲 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档