【flyway】 从mysql的初始化脚本到 oracle 的初始化脚本

背景:系统使用的 flyway 进行自动升级。现在要兼容 oracle。首要之事当然是制作 oracle 的数据初始化脚本。 


失败经历:使用 Navicat Premium 12 的【工具->数据传输】将 mysql 的数据先迁移到 oracle ,到后直接导出 sql 。发现 dao 层的sql(我很确认我写的都是通用sql) 全部无法执行。


成功方式:使用 Navicat 直接导出 mysql 的脚本。然后一点点改为 oracle 的 DDL/DML 语法.

下面罗列下我用的:(ctr+H 整体替换)

  1. change drop table ... to -- drop table...  (将 drop table 语句注释掉)
  2. delete `                                                  (删除斜撇,就是键盘上ESC建下面那个波浪线键)
  3. delete ENGINE=InnoDB DEFAULT CHARSET=utf8   (同 2)
  4. change varchar to varchar2                                         (将 varchar 替换为 varchar2)
  5. delete CHARACTER SET utf8 COLLATE utf8_general_ci  (同 2)
  6. change longtext to clob                                                (将 longtext/text 替换为 clob)
  7. in tables ,change FieldName from : "from"   ,change to : "to"  (from 和to 是在oracle里是保留字,必须加双引号)
  8. in table pidcad_drawing,change size : "size"                 (size也是保留字)
  9. in table pidcad_file ,  change NOT NULL  DEFAULT '1'  : DEFAULT '1' NOT NULL   (oracle 中 默认值和不为空的顺序是 DEFAULT '1' NOT NULL )

附上 mysql 和 oracle 的数据类型对应表 https://blog.csdn.net/huangyinzhao/article/details/80739291


没有迈过去,选择规避的坑:

        有个问题是表中某个字段的数据类型是 longtext,里面有大量的数据。大字段数据作为 oracle 初始化时,生成的 sql 脚本是无法执行的。网上说必须变为 plsql ,我在flyway里没有试验成功。

        我只能选择将这些大字段的置空,通过程序,后期访问的时候再进行初始化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值