迁移案例实操:MySQL迁移到DM8由于有248张表存在datetime字段类型,使用dts迁移到达梦报不支持数据类型【附数据对比工具】

重要:如果报以上错误,建议换一个dts迁移工具,因为有时候换个工具,就解决了很多报错问题。  如果不想换,可以继续阅读下面的内容。    

        本文主要记录MySQL数据迁移到DM8上遇到MySQL源端表存在datetime数据类型时,并且包含datetime数据类型的表达上百张的的情况下,如何完成数据迁移的完整步骤。

1. 解决方法

将MySQL源端表的是datetime数据类型的字段修改为varchar(30)。

2. 处理步骤

(以下操作建议备份数据到测试环境的操作;或者操作前,将业务停掉,并做好数据备份,就可以放心操作啦~)

1).在MySQL源端,通过字典表一次性获取出包含datetime字段的表及字段名,并拼接成批处理语句,批量修改字段类型为varchar(30);

2).使用dts工具迁移源端MySQL的数据到达梦;

3).查看迁移日志,确定没有报错信息;

4).数据对比(工具:数据比对工具)

5).达梦端对应修改源端MySQL中本身为datetime类型的表的字段数据类型为timestamp类型;

6).检查datetime字段数据有没有不符的情况。

3.具体实施过程中的工具和手段

1).在MySQL源端,通过字典表一次性获取出包含datetime字段的表及字段名,并拼接成批处理语句,批量修改字段类型为varchar(30);

SELECT  -- distinct  a.TABLE_NAME -- , b.column_name,b.data_type
  DISTINCT CONCAT('alter table test.', a.TABLE_NAME , ' MODIFY column ',  b.column_name ,' varchar(30) ;')
FROM information_schema.`TABLES` a 
LEFT JOIN  information_schema.`COLUMNS`  b  ON  a.table_name=b.table_name
WHERE a.table_schema ='test' 
AND b.data_type LIKE '%datetime%'
ORDER BY a.table_name;

2).使用dts工具迁移源端MySQL的数据到达梦;

3).查看迁移日志,确定没有报错信息;

4).拼接源端数据统计批处理语句

SELECT  DISTINCT CONCAT('union all select ','''',a.TABLE_NAME,'''','as table_name , count(*) from lcdp_ningstec20230214.', a.TABLE_NAME )
FROM information_schema.`TABLES` a 
LEFT JOIN  information_schema.`COLUMNS`  b  ON  a.table_name=b.table_name
WHERE a.table_schema ='test' 
AND b.data_type LIKE '%datetime%' ;

5).数据对比工具下载地址

      链接:https://pan.baidu.com/s/137g9lhaQs38gP_zkBavWGA?pwd=e8al 
      提取码:e8al  

 

 

 

 6).达梦端对应修改源端MySQL中本身为datetime类型的表的字段数据类型为timestamp类型;

MySQL端的Navicat工具执行:

SELECT  -- distinct  a.TABLE_NAME -- , b.column_name,b.data_type
  DISTINCT CONCAT('alter table test.', a.TABLE_NAME , ' MODIFY ( ',  b.column_name ,' timestamp );')
FROM information_schema.`TABLES` a 
LEFT JOIN  information_schema.`COLUMNS`  b  ON  a.table_name=b.table_name
WHERE a.table_schema ='test' 
AND b.data_type LIKE '%datetime%'
ORDER BY a.table_name;

 更多内容,请访问达梦社区地址:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
将Informix数据库中的某张表数据迁移到Oracle数据库中相同表里,可以按照以下步骤进行操作: 1. 在Oracle数据库中创建相同的表结构:使用CREATE TABLE语句在Oracle数据库中创建与Informix数据库中相同的表结构,确保两个表的字段数据类型和长度等相同。 2. 在Informix数据库中导出数据使用UNLOAD命令将Informix数据库中的表数据导出到一个文本文件中。例如,以下命令将table1表的所有数据导出到table1.txt文件中: ``` unload to table1.txt select * from table1; ``` 3. 将数据文件从Informix服务器复制到Oracle服务器:使用scp或sftp等命令将数据文件从Informix服务器复制到Oracle服务器。 4. 在Oracle数据库中导入数据使用SQL*Loader(SQLLDR)实用程序将数据文件中的数据加载到Oracle数据库中。例如,以下命令将table1.txt文件中的数据加载到table1表中: ``` sqlldr username/password control=load_table1.ctl ``` 在load_table1.ctl文件中指定了数据文件的路径和格式,例如: ``` load data infile '/path/to/table1.txt' into table table1 fields terminated by ',' optionally enclosed by '"' (tran_id, col1, col2, col3, ...) ``` 其中,tran_id是Informix表中的主键或唯一键,需要在Oracle表中进行匹配和插入操作。根据实际情况,您可能需要调整数据文件和控制文件中的格式和字段。 请注意,这只是一个概述,具体操作步骤可能因为版本、环境等原因有所不同。在进行数据迁移前,请务必详细阅读官方文档并进行测试,以确保迁移过程正确无误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值