背景:系统使用的 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里没有试验成功。

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

【flyway】 从mysql的初始化脚本到 oracle 的初始化脚本相关推荐

  1. shell脚本导出oracle数据库,Shell脚本备份恢复Oracle数据库简单示例

    exp_p.sh #!/bin/sh #$1生成dmp文件保存路径 if [ -d $1 ]; then echo $1 exist #用户名/密码 生成文件名称根据当天 exp_p.sh #!/bi ...

  2. 【Oracle健康检查脚本加量不加价】对Oracle 10g、11g和12c版本分别提供了只读版,并且加上了MySQL的健康检查...

    目前一共包含6个脚本,若脚本的扩展名为".sql"则表示该脚本为sql脚本,若脚本的扩展名为".pl"则表示该脚本为perl脚本. 对于SQL脚本而言,其中DB ...

  3. mysql.server 文件是什么_mysql的启动脚本mysql.server及示例配置文件

    以MySQL-server-4.0.14-0.i3862881064151.rpm为例,放在/data目录下 cd /data rpm -ivh MySQL-server-4.0.14-0.i386. ...

  4. Oracle数据库实用脚本

    以下是Maclean.Liu所编写或收集的Oracle数据库实用脚本的列表,在这里分享一下: Script:收集Enterprise Manager Grid Control/Agent/Databa ...

  5. 启动和停止Oracle服务bat脚本

    总所周知,Oracle随开机启动会占很大内存,而你每次想用的时候还得去计算机服务里去找服务.一个一个的启动,比较麻烦. 这里给出两个bat脚本,来直接双击启动和停止Oracle服务[脚本内容来源于网络 ...

  6. lua mysql 事务_为什么在 Redis 实现 Lua 脚本事务?-阿里云开发者社区

    在刚过去的几个月中,我一直在构思并尝试在 redis 中实现 lua 脚本的事务功能.没有多少人理解我的想法,所以我将通过一些历史为大家做下解释. MySQL 与 Postgres 在 1998-20 ...

  7. SpringBoot2.x整合JDBC及初始化data.sql和schema.sql脚本

    今天在使用SpringBoot2.x版本整合JDBC时遇到了一些问题:由于我之前一直用SpringBoot1.5的版本,所以直接在yml里按照1.5的版本配置了属性,没想到2.x直接不能用了.首先是数 ...

  8. oracle执行命令显示2,oracle数据库执行脚本时常用命令总结

    收集了一篇oracle数据库执行脚本常用命令总结,希望给同学带来一些帮助. 1. 执行一个SQL脚本文件 代码如下 sqlplus user/pass@servicenamefile_name.sql ...

  9. oracle中key,mysql中的key在oracle中是什么

    mysql中的key在oracle中是什么 说明一下.key在oracle中对应的是什么? 比如说: CREATE TABLE `AdBanner` ( `BannerId` int(8) NOT N ...

最新文章

  1. 【青春须早为,岂能长少年】一个初入职场程序员的阶段总结
  2. android碎片调用动态碎片,Android Training - 使用碎片创建一个动态UI
  3. android查看控件的xml属性,006 Android XML 控件属性设置技巧汇总
  4. linux安装rsync在各主机之间同步文件
  5. c#统计字符串中数字字符的个数【C#】
  6. Window下本地redis的安装、配置以及java版试用
  7. Linux随笔 - 修改主机名
  8. 云数据库MySQL5.7单机基础版上线
  9. 明解C语言第四章习题
  10. PHP生成一寸照片代码,用PS制作1寸证件照方法介绍
  11. 北京知产局:鼓励当事人用区块链,获取、固定知识产权纠纷证据
  12. 软件工程基础-个人项目-数独游戏
  13. 旧电脑更新win10日记
  14. 【三子棋】C语言实现简易三子棋
  15. 使用tk.mapper和pagehelper一个bug记录:没有为 'PAGE_TABLE_ALIAS' 的列 4 指定任何列名称
  16. 保罗兰德作品赏析_保罗·兰德简介
  17. html加拼音注释,HTML——格式化文本标记、拼音/音标注释ruby 标记和rt/rp 标记、段落缩进标记blockquote、预格式化标记pre...
  18. 单页网站不会限制您的选择
  19. Audio的播放流程
  20. 国产信创Linux桌面系统比较:软件包格式及软件管理、桌面环境及桌面应用

热门文章

  1. 如何在极速PDF编辑器中调整PDF视图?
  2. 【无限互联】iOS标签云
  3. 刷脸设备引进越来越多的人喜欢靠脸消费
  4. [API ]新浪微博腾讯QQ音乐网易云音乐小米云钉钉笔记百度高德地图淘宝阿里云 API
  5. 国际护士节活动策划PPT模板
  6. 中学计算机课 打字教案,计算机课教案.doc
  7. 锐捷交换机RLDP技术
  8. html整理,常用标签
  9. composer 出错忽律命令!!!
  10. 安卓微信调用外部浏览器