我是靠谱客的博主 碧蓝老鼠,最近开发中收集的这篇文章主要介绍数仓 调度_database-sync: 数据库表同步工具、数据仓库工具、数据集市工具,数据抽取。传入一定的参数,即可在相同或不同的数据库间进行表的同步,包括表结构的同步及数据的同步。作业由调试工具进...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

介绍

java 程序编写,真正跨平台。本程序的最大用处就是构建集市或数仓所需要的基础层数据源。

简单的传入一定的参数,即可跨数据库实现以下功能:

两个表之间数据的同步,可以增量或全量更新。

两个表表结构的同步,包括自动建表,原表扩字段长度或增加字段,目标表也做相同动作。

支持指定原表或目标表的字段序列,更灵活。默认按目标表的字段序列查询原表的字段序列。

支持视图到表的数据抽取。

日志记录、插入记录数统计、耗时统计。

结合调度工具,您可以轻松搭建一个数据仓库或集市。

目前项目已经投入生产使用 ,欢迎感兴趣的朋友一起加入。

程序的使用方法

数据库的信息写在配置文件中,计划支持各种主流关系型数据库,如 MysqL、Db2、Oracle、PostgreSQL。

程序运行前确保已安装 java 1.8 或后续版本,已经安装 maven,如果没有请安装一下,网上到处都是安装教程。

然后 clone 源码,打包:

git clone https://gitee.com/somenzz/database-sync.git

cddatabase-sync

mvn package

cdtarget

java -jar database-sync-1.1.jar

程序名称叫 database-sync,运行方式是这样的:

(py37env) ➜ target git:(master) ✗ java -jar database-sync-1.1.jar

Usage:

java -jar database-sync-1.0.jar [options] {fromDB} {fromSchema} {fromTable} {toDB} {toSchema} {toTable} [whereClause]

options:

--version or -v :print version thenexit

--help or -h :print helpinfo thenexit

--simple or -s :use insert into table A select * from B mode, ignore table's structure

--from_fields={col1,col2} or -ff={col3,col4} :specify from fields

--to_fields={col1,col2} or -tf={col3,col4} :specify to fields

帮助说明:

[] 中括号里的内容表示选填,例如 [options] 表示 options 下的参数不是必须的。

1、其中 options 参数解释如下:

--simple 或者 -s : 简单模式,此时只进行数据传输,不进行表构的同步。

--from_fields=col1,col2 或者 -ff=col1,col2 : 指定原表的字段序列,注意 = 前后不能有空格。

--to_fields=col3,col4 或者 -tf=col3,col4 : 指定目标表的字段序列,注意 = 前后不能有空格。

2、whereClause 表示 where 条件,用于增量更新,程序再插入数据前先按照 where 条件进行清理数据,然后按照 where 条件从原表进行读取数据。 whereClause 最好使用双引号包起来,表示一个完整的参数。如:"jyrq='2020-12-31'"

{} 大括号里的内容表示必填。

fromDb 是指配置在 config.json 的数据库信息,假如有以下配置文件:

{

"postgres":{

"type":"postgres",

"driver":"org.postgresql.Driver",

"url":"jdbc:postgresql://localhost:5432/apidb",

"user":"postgres",

"password":"aaron"

},

"aarondb":{

"type":"mysql",

"driver":"com.mysql.cj.jdbc.Driver",

"url":"jdbc:mysql://localhost:3306/aarondb?useSSL=false&characterEncoding=utf8&serverTimezone=UTC",

"user":"aaron",

"password":"aaron"

}

}

则 fromDb、toDb 可以是 aarondb 或者 postgres。

fromSchema 读取数据的表的模式名,可以填写 "".

fromTable 读取数据的表明,必须提供。

toSchema 写入数据表的模式名,可以填写 "",可以和 fromSchema 不同.

toTable 写入数据表的表名,必须提供,当写入表不存在时,自动按读取表的表结构创建,可以和 fromTable 不同。

增量更新

java -jar database-sync.jar {fromDb} {fromSchema} {fromTable} {toDb} {toSchema} {toTable} [whereClause]

与全量更新的唯一区别是可以提供 where 条件,程序按 where 条件自动清理数据,写入数据。

配置文件说明

配置文件位于 config/config.json,如下所示:

{

"sjwb":{

"type":"db2",

"driver":"com.ibm.db2.jcc.DB2Driver",

"url":"jdbc:db2://192.168.1.*:50000/wbsj",

"user":"****",

"password":"****",

"encoding":"utf-8"

},

"dw_test":{

"type":"db2",

"driver":"com.ibm.db2.jcc.DB2Driver",

"url":"jdbc:db2://192.168.169.*:60990/dwdb",

"user":"****",

"password":"****",

"encoding":"gbk"

},

"postgres":{

"type":"postgres",

"driver":"org.postgresql.Driver",

"url":"jdbc:postgresql://10.99.**.**:5432/apidb",

"user":"****",

"password":"****",

"encoding":"utf-8"

},

"aarondb":{

"type":"mysql",

"driver":"com.mysql.cj.jdbc.Driver",

"url":"jdbc:mysql://localhost:3306/aarondb?useSSL=false&characterEncoding=utf8&serverTimezone=UTC",

"user":"****",

"password":"****",

"encoding":"utf-8"

},

"buffer-rows":100000

}

配置文件说明:

buffer-rows 表示读取多少行时一块写入目标数据库,根据服务器内存大小自己做调整,100000 行提交一次满足大多数情况了。

encoding 用于表结构同步时,utf-8 库的字符串长度应该是 gbk 库字符串长度的 2 倍,可以解决字段含有中文的问题,为什么是 2 倍? 为了字符串的长度不会出现小数位。

编写目的

提高数据库间表的同步效率,如果是轻加工,就丢掉低效的 datastage 和 kettle 吧。

参与贡献

张慧峰

施云霄

高鹏

最后

以上就是碧蓝老鼠为你收集整理的数仓 调度_database-sync: 数据库表同步工具、数据仓库工具、数据集市工具,数据抽取。传入一定的参数,即可在相同或不同的数据库间进行表的同步,包括表结构的同步及数据的同步。作业由调试工具进...的全部内容,希望文章能够帮你解决数仓 调度_database-sync: 数据库表同步工具、数据仓库工具、数据集市工具,数据抽取。传入一定的参数,即可在相同或不同的数据库间进行表的同步,包括表结构的同步及数据的同步。作业由调试工具进...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部