项目背景
项目每天需要从oracle,gbase8a,mysql三种数据库中抽取增量数据和全量数据到阿里的ADS中,之前是基于kettle+crontab来实现数据的抽取与调度的。因kettle配置简易,但抽取效率低,无法满足业务的日常使用,目前开源软件datax在测试期间性能与效果都能满足业务需要,但也有一个缺点,那就是datax的json配置文件配置起来不太方面,于是就有了这篇文章。
项目需求
1、将kettle同步的业务表修改为了datax同步
2、oracle数据库中有70张业务,gbase8a中有60张,mysql中有85张
3、ADS中的表结构与oracle,gbase8a中的业务表结构保持一致。
实现思路
datax的主要工作是书写json配置文件,即源库与目标库中业务表字段的对应关系,而这一部分都是ctl +c、ctl+v 操作,所以通过相应的SQL语句与SHELL相结合即可解决繁琐的配置操作。
1、制定json同步模板及格式
2、通过SQL语句获取业务表的字段
3、通过SHELL批量生成同步表的json配置文件
实现方式
1、模板格式
gbase_template.txt
{
"job": {
"setting": {
"speed": {
"byte": 1048576
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "rdbmsreader",
"parameter": {
"username": "${gbase_username}",
"password": "${gbase_password}",
"connection": [
{
"querySql": [
"sele