首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

“GoLang编程”我的第一个Go效率工具:自动纠错并同步数据

因工作需要,从第三方平台下载统计数据到公司内部数据库。

最好的路径应该是:

1、利用第三方OpenAPI直接获取数据;

2、和自己数据库中的数据比较,看哪些需要同步

3、有需要同步的,则同步过来

但是,咨询并查阅第三方OpenAPI后发现,没有统计数据可下载。

那就改变一下:

1、手工下载统计数据 -- zip文件到本地

2、后续同步过程使用Go代码写的工具去实现

2.1、检查zip文件时间和本地数据库时间,如果大于数据库最新数据时间,则需要同步

2.2、如果需要同步,则解压zip文件,生成csv文件。

2.3、同步csv文件到本地数据库对应的表。但有个坑:csv文件title和行实际数据不一定一致。

需要每行检查并纠正。

2.4、数据库中有和csv文件对应的模板表,从模板表创建对应的数据表。

2.5、把csv对应的行数据insert into对应的表--中间表

3、检查本地数据库中间表,检查是否需要实际插入目标表。如果有则插入。

因为数据必须完整,故所有数据库操作采用事务方式处理。

本工具暂时只有处理最新zip文件,和最新中间表。并没有做到处理所导出数据zip文件,没有检查所有本地中间表文件。待优化,不过因为一周只需要执行一次,故暂时满足使用了。

主函数如图:

数据中间表to目标表:

GoLang的数组参数是值传递的,复制副本成本高。而其它复合类型,map,slice等都是指针传递的。

mysql事务,通过sql.DB的begin()得到sql.TX对象。事务对象通过Commit()或Rollback()释放。

好了,以后不用手工同步数据了,只需要每周一次的手工下载统计文件。

很容易打包成exe文件。发布这这方面还是比Python方便一点。

工作中,好多手工都尽量工具化。提高工作效率。

我是【天问火星人】,又名【程序员黑洞】,一个程序员。正在学GoLang,用GO给自己写效率工具。 欢迎关注我,欢迎留言交流。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200731A0Y87H00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券