文山网站建设公司,wordpress文章编辑页面,新网企业邮箱,徐州网站开发多少钱最近处理一个需求#xff0c;使用脚本方式将mysql里的数据迁移到oracle中。处理思路主要是利用mysqldump导出的insert dump文件#xff0c;oracle中建立相同表结构执行insert。记录本次操作中遇到的问题与处理方式#xff1a;1、超4000字节字符串导入问题描述oracle varchar…最近处理一个需求使用脚本方式将mysql里的数据迁移到oracle中。处理思路主要是利用mysqldump导出的insert dump文件oracle中建立相同表结构执行insert。记录本次操作中遇到的问题与处理方式1、超4000字节字符串导入问题描述oracle varchar2是不能插入超4000字节的字符串的。但是mysql中并没有限制。此类字段数据无法导入。处理方式开始将字段转换为clob字段。但目标端oracle数据库部分业务使用dblink连接。dblink是不支持使用lob字段的。目标端oracle版本为12.2。oracle 12c版本已扩展最大值支持到32767。调整数据库支持32k修改如下ALTER SYSTEM SET MAX_STRING_SIZE EXTENDED SCOPESPFILEshutodnw immediatestartup upgrade;$ORACLE_HOME/rdbms/admin/utl32k shut immediate;startup;再将导入列属性改为需求大小导入成功。但是还有一个问题dblink不支持clob字段但是超4000字节的字符串同样不支持。分析主要是select查询业务业务的sql语句中改为substr取4000字节即可。2、日期字段修改问题描述mysql dump方式导出的insert语句中关于日期部分目标oracle端建立date属性列无法识别导入。处理方式oracle建立表结构时先使用varchar导入。导入后再进行手工准换。alter table test add col_name_t date; --添加一个date中间列update test set col_name_t TO_DATE(col_name,yyyy-mm-dd hh24:mi:ss);commit;alter table test drop column old_col_name; --删除旧的列alter table xxx rename column col_name_t to col_name; --转换中间列3、目标oracle端数据与mysql时间相差8小时问题描述数据导入后业务查询发现oracle端日期比mysql库晚8小时。这主要是时区导致。数据库采用北京时间东八区mysqldump默认使用–tz-utc参数是0时区。导致导出文件中的timestamp时间值相对于数据库查询显示的时间倒退了8个小时。处理方式mysqldump加入 --skip-tz-utc参数