ZCBUS数据导出工具table_compare

please set terminal codeset is utf8 for output chinese.

table_compare工具提供对数据库指定的表进行比对的功能,表必须有主键或者唯一索引。
源库和目标库可以是同一个库,也可以是不同的库,支持异构数据库的比对,源库和目标库可以是oracle、mysql、sqlserver、db2、postgresql、sybase的任何一种。
比对结束后,可以输出比对详细结果的report.txt文件,如果使用时加上-repair参数,可以同时输出修复用的bsd文件,用bsdata_dump工具,可以查看bsd文件的具体内容。

目前支持数据库列表

数据库列表 版本列表 操作系统列表
ORACLE 8I/9I/10G/11G/12C/18C/19C/20C WINDOWS/LINUX/AIX/HP-UX/SOLARIS
mysql 5.5,5.6,5.7 WINDOWS/LINUX
sqlserver 2005以及以上 WINDOWS/LINUX
POSTGRESQL 9.4以上 LINUX/WINDOWS
SYBASE 12.7以上 LINUX
DB2 9.4以上 LINUX/AIX/WINDOWS
DAMENG LINUX/AIX/WINDOWS

TABLE_COMPARE参数列表

  -h                      help
  -v                      version
  -log_level 2            log_level
  -source db_type:user/pwd@ip:port
                          source database
  -source_table s.t1      source table to compare
  -target db_type:user/pwd@ip:port
                          target database
  -target_table t.t1      target table to compare
  -parallel 2             select parallel count, default 4, for oracle
  -to_single_byte         convert varchar2 to single byte, for oracle
  -where "col1=1"         where condition, if set this, ignore source_where and target_where
  -source_where "col1=1"  source where condition
  -target_where "col1=1"  target where condition
  -source_db_charset GB18030
                          set source database charset, for sybase
  -target_db_charset GB18030
                          set target database charset, for sybase
  -columns c1,c2,c3       specify columns to compare, must include pk or uk
  -keys c1,c2             specify table primary key
  -repair                 output repair file

备注:主键字段值如果有换行符,windows下的'\r\n'被替换成<zcbusbrn>,linux的'\n'替换成<zcbusbn>,如果是用输出的主键值查询时请注意替换。
-

数据比对测试DEMO:

 - MYSQL - MYSQL 
  ./table_compare -source mysql:zcbus/password@127.0.0.1:3306 -source_table mm.test -target mysql:zcbus/password@127.0.0.1:3306 -target_table dt2.test
 - ORACLE - ORACLE
  ./table_compare -source oracle:zcbus/password@172.17.58.145:1521/oracle12c -source_table zcbus.test -target oracle:zcbus/password@172.17.58.145:1521/oracle12c -target_table zcbus.test1
 - POSTGRESQL-POSTGRESQL
  ./table_compare -source postgresql:zcbus/password@127.0.0.1:5432 -source_table postgres.public.test -target postgresql:zcbus/password@127.0.0.1:5432 -target_table postgres.public.test1
 - SQLSERVER - SQLSERVER 
  ./table_compare -source sqlserver:zcbus/password@172.17.104.185:1433 -source_table ds.dbo.test -target sqlserver:zcbus/password@172.17.104.185:1433 -target_table ds.dbo.test2
 - DB2 - DB2
  ./table_compare -source db2:zcbus/password -source_table zcbus.DB2INST1.TEST -target db2:zcbus/password -target_table zcbus.DB2INST1.TEST1
 - SYBASE - SYBASE
  ./table_compare -source sybase:zcbus/password@172.17.58.145:5000 -source_table ds.dbo.test -target sybase:zcbus/password@172.17.58.145:5000 -target_table ds.dbo.test1

  * **注意:**比对过程中,时间字段微秒全部转换为秒,微秒部分省略

详细说明:


table_compare工具提供对数据库指定的表进行比对的功能,表必须有主键或者唯一索引。
源库和目标库可以是同一个库,也可以是不同的库,支持异构数据库的比对,源库和目标库可以是oracle、mysql、sqlserver、db2、postgresql、sybase的任何一种。
比对结束后,可以输出比对详细结果的report.txt文件,如果使用时加上-repair参数,可以同时输出修复用的bsd文件,用bsdata_dump工具,可以查看bsd文件的具体内容。

参数详细说明:
-source db_type:user/pwd@ip:port
              设置源库的连接参数,不同类型的库的连接字符串示例如下:
              mysql:zcbus/password@127.0.0.1:3306
              oracle:zcbus/password@172.17.58.145:1521/oracle12c
              postgresql:zcbus/password@127.0.0.1:5432
              sqlserver:zcbus/password@172.17.104.185:1433
              db2:db2inst1/db2inst1@172.17.58.145:50000
              sybase:zcbus/password@172.17.58.145:5000
-source_table s.t1
              设置源表的表名,不同类型数据库的表名格式:
              mysql     : db.table
              oracle    : user.table
              sqlserver : db.schema.table
              db2       : db.schema.table
              postgresql: db.schema.table
-target db_type:user/pwd@ip:port
              设置目标库的连接参数,连接字符串参考 -source
-target_table t.t1
              设置目标表的表名,表名格式参考 -source_table
-columns c1, c2, c3
              指定比对的列名,多列用逗号隔开,指定的列里面必须包含主键列或唯一索引的列 
-source_where "col1=1"
              指定对源表select时使用的where条件 
-target_where "col1=1"
              指定对目标表select时使用的where条件 
-where "col1=1"
              指定对源表和目标表共同使用的where条件,如果设置了此参数,
              -source_where和 -target_where自动忽略 
-parallel 2
              如果源库或目标库是oracle库,该参数可以设置select /*+parallel*/ 的并发数 
-repair
              比对结束后输出修复用的bsd文件 

备注:主键字段值如果有换行符,windows下的'\r\n'被替换成<zcbusbrn>,linux的'\n'替换成<zcbusbn>,如果是用输出的主键值查询时请注意替换。
文档更新时间: 2022-02-08 20:53   作者:阿力