Mongo数据进入Mysql功能开发

Mongo数据进入Mysql功能开发

临时中午接到任务,需要开发该功能。所以编码直接写流程了。

​首先来看问题:

  移除点击此处添加图片说明文字

​所以,我们定位日志文件:

  移除点击此处添加图片说明文字

​已经卡主好几天了,看来需要重新开发了。

所以,我们定位问题,在crontab任务里面:

  移除点击此处添加图片说明文字

​代码jar位置:

  移除点击此处添加图片说明文字

​也不用反编译了,我们定位到svn代码为止,导入ide开发。

对了,在此之前,我们先来看一下报错:

  移除点击此处添加图片说明文字

​我们more一下,看看

  移除点击此处添加图片说明文字

乍一看还没怎么看懂,至少当时我是指定为到两个原因的虽然后来都被我猜对了:

1.数据源问题,数据源有脏数据

2.目标数据库表字段没有对上

那好,本着这两个目的,我们需要追踪问题了。

那么首先我们要准备数据源,先发邮件给dba要目标源表结构,然后弄到本地吧。

  移除点击此处添加图片说明文字

​放到本地mysql里面,执行

  移除点击此处添加图片说明文字

​这是我们将来的目标表。按照

  移除点击此处添加图片说明文字

​制作本地开发环境。

现在要给mongo库准备数据了。

/opt/mongo/db/bin/mongodump  --host 127.0.0.1 --port 27010 --db new_market_report --collection   apk_cnt_pvuv_ch -q '{"dt":{$gte:"2017-08-18",$lt:"2017-08-25"}}' --out ./tmp/20170824/


再导入:

/home/mongo/bin/mongorestore  --port 27019 -d new_market_report -c apk_cnt_pvuv_ch /home/mongo/bin/tmp/20170822/new_market_report/apk_cnt_pvuv_ch.bson


 db.pdc_status.remove({"status_code":"OK"});

 /opt/mongo/db/bin/mongodump  --host 127.0.0.1 --port 27010 --db new_market_report --collection   pdc_status  --out ./tmp/20170824/

/home/mongo/bin/mongorestore  --port 27019 -d new_market_report -c pdc_status /home/mongo/bin/tmp/20170822/new_market_report/pdc_status.bson

操作mongo数据库:

一般两部,用mongodump来将正式数据导出,然后使用mongorestore导入测试库。

  移除点击此处添加图片说明文字

​这里,注意我们有有一哥参数:-q '{"dt":{$gte:"2017-08-18",$lt:"2017-08-25"}}'

就是所需要的结果查询区间。所有的数据太多了。这里我们要记住这两个表:

1.pdc_status

2.apk_cnt_pvuv_ch

后面解释这两个表,先存着。知道一个是主表,另一个是流程表即可。

  移除点击此处添加图片说明文字

​先看这个,pdc_status里面的,对流程定义已经到了18号了。后面详细说。

到此我们开发环境已经搭建好了。

svn代码:


好了,down下来。

  移除点击此处添加图片说明文字

​我们调用ReportDataMultiThread来处理数据,将mongo数据库集运送到mysql,反推送结果数据。

也请注意,这里其实已经做了多进程创建,只需要参数提供即可。当然,默认做一天即可。那你可能会问,我怎么保证报错重跑,不要急,我们可以交给流程表。

工作流的两个核心表:流程定义表;流程表。

这两个即可完成基本的工作流,这里也一样,我们用这两个基本的思路即可。

  移除点击此处添加图片说明文字

​我们拿utils类,取得024,即流程定义类型,这个tools的utils常量类,就相当于流程定义表的功能,提供流程定义,然后我们看,注释写的很清楚,拿到这个024的流程,可以看到

  移除点击此处添加图片说明文字

可以看到,mongodb里面,这条数据做了流程控制,当前staus_code   为start,表示,数据跑了没有跑完,跑完为ok。​"status_dt" : "2017-08-18"表示,流程到了18号,前面已经搞定了,后面还没有。

  移除点击此处添加图片说明文字

​这里,我们打印sql,

  移除点击此处添加图片说明文字

​拖到navicat里面:

  移除点击此处添加图片说明文字

​豁然开朗了,熟悉了。和日志里面报错一样的。那我们:

 改成 PreparedStatement prestmt = conn.prepareStatement("select banks from loan where loan_type=?");
prestmt.setString(1,loanType);

 直接拼sql 语句是不规范的,会有sql注入攻击。试想一个应用的包名,叫:“drop database;”

只要思想不滑坡,办法总比困难多

  移除点击此处添加图片说明文字

​预编译一下就没问题了。

  移除点击此处添加图片说明文字

​会被转义,ok。对了说一下数据源,如果打包千万别搞错了。

  移除点击此处添加图片说明文字

​然后打包:

  移除点击此处添加图片说明文字

​堡垒机操作,右键ftp选择用户

  移除点击此处添加图片说明文字

​做好备份,提交之后:

  移除点击此处添加图片说明文字

​一步一步

  移除点击此处添加图片说明文字

​ok了,这就搞定了,完工。

接下来,要从无到有,开发一个解放运营的功能,就是自动给入参数,查询mongo发送邮件到朋友的邮箱。这个预计下周开发完毕,到时候,也可以做代码分享和设计分享。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值