# 数据库对比 **Repository Path**: menghui/database_comparison ## Basic Information - **Project Name**: 数据库对比 - **Description**: No description available - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-12 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 对比数据库 一个奇葩项目里面需要频繁对比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为上面配置文件的文件名 ## 输出报表 ![](a.png) # 对比数据库表 ## 配置文件格式:方括号中是说明 配置文件参考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 将目标表合并到原表,即合并后原表的数据和目标表一致 ## 输出报表 ![](b.png) ![](c.png)