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 作者:阿力