一个奇葩项目里面需要频繁对比2个数据库之间的差异,还要可以生成脚本可以将两个数据库同步成一样的,不知道使用sql咋处理,简单粗暴的写个小程序做这件事。
配置文件参考config.properties
src.dburl = jdbc:oracle:thin:@localhost:1521:orcl [源数据库链接串]
src.username =bjntu_er [源数据库用户名]
src.passwd =12345 [源数据库密码]
des.dburl = jdbc:oracle:thin:@localhost:1521:orcl [目标数据库连接串]
des.username =springbatch [目标数据库用户名]
des.passwd =123456 [目标数据库密码]
[以下配置每一个对比任务的信息,下面配置中cp2是对比的名称,用于生成对比报告的文件名,src开头的为源表配置,des开头的为目标表配置]
src.cp2.keyindexs =USER_ID [返回数据中的主键字段,英文逗号分割]
src.cp2.sql = SELECT * FROM JEDA_USER a inner join JEDA_USER b on a.user_id=b.user_id [查询语句]
src.cp2.ingorefield=POSITION_ID [忽略的字段列表,英文逗号分割]
des.cp2.keyindexs =USER_ID [返回数据中的主键字段,英文逗号分割]
des.cp2.sql = SELECT * FROM JEDA_USER a inner join JEDA_USER b on a.user_id=b.user_id [查询语句]
des.cp2.ingorefield=POSITION_ID [忽略的字段列表,英文逗号分割]
java -jar compare.jar -csql -f config.properties
config.properties为上面配置文件的文件名
配置文件参考config2.properties
src.dburl = jdbc:oracle:thin:@localhost:1521:orcl [源数据库链接串]
src.username =bjntu_er [源数据库用户名]
src.passwd =12345 [源数据库密码]
des.dburl = jdbc:oracle:thin:@localhost:1521:orcl [目标数据库连接串]
des.username =springbatch [目标数据库用户名]
des.passwd =123456 [目标数据库密码]
mergeTableList = TABLE2 [需要对比的表名,英文逗号分割]
java -jar compare.jar -msql -d2s -f config2.properties
参数说明:
-c 对比数据库表并输出对比报告
-msql 生成合并的sql语句并保存文件,输出对比报告
-m 直接合并数据库,输出对比报告
以上三个参数不能同时存在,当存在-msql或-m参数时,可以设定以下参数:
-s2d 将原表合并到目标表,即合并后目标表的数据和原表一致
-d2s 将目标表合并到原表,即合并后原表的数据和目标表一致
Sign in for post a comment
Comments ( 0 )