注册
MYSQL迁移到达梦之数据比对
技术分享/ 文章详情 /

MYSQL迁移到达梦之数据比对

雪松 2025/04/03 44 0 0

最近,在项目上实施了MYSQL到达梦的数据上线迁移工作,为了方便迁移数据后进行数据比对,针对源端(MYSQL)和目标端(达梦)编写了相应的存储过程(SQL语句),具体如下:
----MYSQL端执行如下sql
USE ccxt;
–创建移植辅助表,统计指定用户下所有的对象并插入到辅助表中
create table MYSQL_tables(
object_owner varchar(20),
object_name varchar(200),
object_type varchar(20)
);
–将需要统计的表名插入统计表:
insert into MYSQL_tables
SELECT table_schema,table_name,table_type FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = ‘ccxt’ AND table_name NOT IN (‘DM_OBJECTS’,‘DM_TABLES’,‘MYSQL_tables’,‘MYSQL_TABLES_COUNT’);
commit;
–查询所有表:
select * from MYSQL_tables;

–创建统计数据量的辅助表,统计每个表的数据量并插入到辅助表中
CREATE TABLE MYSQL_TABLES_COUNT(TAB_NAME VARCHAR(100),TAB_COUNT INT);
–创建存储过程,用于收集所有表的数据量:
DELIMITER $$
CREATE PROCEDURE PROC_TABLE_COUNT()
BEGIN
DECLARE STR VARCHAR(200);
DECLARE DONE INT DEFAULT 0;
DECLARE RS CURSOR FOR SELECT TABLE_NAME AS OBJECT_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = ‘ccxt’ AND TABLE_TYPE =‘BASE TABLE’ AND TABLE_NAME NOT IN (‘DM_OBJECTS’,‘DM_TABLES’,‘MYSQL_TABLES’,‘MYSQL_TABLES_COUNT’,‘MYSQL_OBJECTS’);
/* 打开游标 /
OPEN RS;
READ_LOOP: LOOP
FETCH NEXT FROM RS INTO STR;
IF DONE THEN
LEAVE READ_LOOP;
END IF;
/
遍历数据表 /
/
SELECT STR; /
SET @SQLSTR := CONCAT(‘INSERT INTO MYSQL_TABLES_COUNT SELECT ‘,’’’’,STR,’’’’,’,COUNT(
) FROM ',STR);
PREPARE STMT FROM @SQLSTR ;
EXECUTE STMT;
DEALLOCATE PREPARE STMT;
/* SELECT @SQLSTR; /
END LOOP;
/
关闭游标 */
CLOSE RS;
COMMIT;
END$$
DELIMITER ;
–执行过程,收集MYSQL端所有表的数据量
call proc_table_count;
–查询源端MYSQL中表的数据量,并导出为excel:
select * from MYSQL_TABLES_COUNT order by TAB_COUNT desc;

–目标端(达梦)通过以下SQL语句生成查询表的数据量的批量语句:
select ‘select ‘’’||table_name||’’’,count() as CNT from COREMAIL.’||table_name||’ union all’ from dba_tables where owner=‘XXXMAIL’;
–执行生成的批量语句,即可得到以下批量查询语句:
select ‘TD_ALIAS_SEED’,count(
) as CNT from XXXMAIL.TD_ALIAS_SEED union all
………………………………………………中间略…………………………
select ‘TD_COS’,count(*) as CNT from XXXMAIL.TD_COS union all
通过以上批量语句,即可查到目标端(达梦)的所有表的数据量,按表名排序后,可导出到excel中。
最后,将源和目标的数据量统计结果在excel中相减,根据差值是否为0来判断迁移的数据量是否准确。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服