将mysql脚本转化为oracle脚本的攻略与细节点

 更新时间:2023年09月13日 09:27:18   作者:七羽319  
前段时间公司项目数据库需要从mysql转为oracle,所以需要修改下原有的mysql脚本,这篇文章主要给大家介绍了关于将mysql脚本转化为oracle脚本的攻略与细节点,需要的朋友可以参考下

一、将MySQL脚本转换为Oracle脚本需要考虑到两个关键因素:

语法差异:MySQL和Oracle SQL之间存在一些语法差异,例如日期函数、字符串处理、聚合函数等。在转换脚本时需要将这些差异进行适当的调整。

数据类型不一致:MySQL和Oracle使用不同的数据类型,因此需要确保在转换脚本时使用了正确的数据类型。

二、将MySQL脚本转换为Oracle脚本的指南:

将MySQL特定的函数或关键字转换为Oracle语法。例如:

DATE_FORMAT(date, format) 在Oracle中可以使用TO_CHAR(date, format)。

LIMIT offset, count 在Oracle中可以使用ROWNUM。

IFNULL(expr1, expr2) 在Oracle中可以使用NVL(expr1, expr2)。

将MySQL数据类型转换为Oracle数据类型。例如:

TINYINT 在Oracle中可以使用NUMBER(3)。

MEDIUMTEXT 在Oracle中可以使用CLOB。

DATETIME 在Oracle中可以使用DATE或TIMESTAMP。

修改MySQL语法以适应Oracle语法。例如:

MySQL使用反引号(`)来引用标识符,在Oracle中使用双引号(")或者不使用引号。

MySQL使用BACKSLASH(反斜杠)作为转义字符,在Oracle中使用单引号(')代替。

总体来讲,将MySQL脚本转换为Oracle脚本需要深入了解两种数据库的语法、函数和数据类型。建议先学习Oracle SQL语法,然后逐行检查MySQL脚本并将其转换为Oracle语法。

三、细节点

1.(所有的not null必须放default后面),否则会报miss right parentheses

2.所有的`符号替换为" (可以放到idea使用快捷键操作)

3.全部使用大写 (可以放到idea使用快捷键操作)

4.TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP
换为:DATE DEFAULT SYSDATE NOT NULL

5.自增AUTO_INCREMENT换成序列

CREATE SEQUENCE SEQ_MSW_ID MINVALUE 1 MAXVALUE 99999999999999999999 INCREMENT BY 1 CYCLE CACHE 50;

6.INDEX,TYPE等关键字字段需要使用双引号引起来

7.删除 COMMENT 额外添加

COMMENT ON COLUMN "表名"."字段" IS '字段描述';

8.特殊字符拼接

9.‘2020-01-01 00:00:00’ 字符串的时间需要转换为to_date
TO_DATE(‘2022-04-12 03:32:01’, ‘SYYYY-MM-DD HH24:MI:SS’)

-- 处理之前的mysql的sql
INSERT INTO `organization` (`id`, `name`, `description`, `avatar`, `user_id`, `project_num`, `member_num`, `role_num`, `allow_create_project`, `member_permission`, `create_time`, `create_by`, `update_time`, `update_by`)
VALUES (1, 'guest\'s Organization', NULL, NULL, 1, 0, 1, 0, 1, 1, '2020-01-01 00:00:00', 1, NULL, NULL);
-- 处理后的oracle的sql
INSERT INTO "ORGANIZATION" ("ID", "NAME", "DESCRIPTION", "AVATAR", "USER_ID", "PROJECT_NUM", "MEMBER_NUM", "ROLE_NUM",
                            "ALLOW_CREATE_PROJECT", "MEMBER_PERMISSION", "CREATE_TIME", "CREATE_BY", "UPDATE_TIME",
                            "UPDATE_BY")
VALUES (1, 'GUEST' || '''' || 'S' || ' ORGANIZATION', NULL, NULL, 1, 0, 1, 0, 1, 1, TO_DATE('2023-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'), 1, NULL,
        NULL);

10.dml中的value字符串不能使用双引号

11.单引号使用四个单引号转义

SELECT 'GUEST' || '''' || 'S' || ' ORGANIZATION' from dual

12. 批量替换数据类型时,注意字段中包含指定的字符,防止误替换

举例:int 批量替换为number时,表中的字段可能也含有int字符

总结

到此这篇关于将mysql脚本转化为oracle脚本的攻略与细节点的文章就介绍到这了,更多相关mysql脚本转化oracle脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何优雅、安全的关闭MySQL进程

    如何优雅、安全的关闭MySQL进程

    这篇文章主要介绍了如何优雅、安全的关闭MySQL进程,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
    2020-08-08
  • Sql在单一表中检索数据的方法详解

    Sql在单一表中检索数据的方法详解

    这篇文章主要介绍了Sql在单一表中检索数据的方法,SELECT语句是SQL中最常用的语句。它的用途是从一个或多个表中检索信息。为了使用SELECT检索表数据,必须至少给出两条信息:想选择什么、从什么地方选择
    2023-02-02
  • MySQL分区表实践指南

    MySQL分区表实践指南

    MySQL分区是一种数据库优化技术,通过将大表或索引分割成多个较小的片段来提高查询性能、管理效率和数据管理,本文详细介绍了MySQL分区的基本概念、工作原理、使用场景以及操作方法,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • MySQL的子查询及相关优化学习教程

    MySQL的子查询及相关优化学习教程

    这篇文章主要介绍了MySQL的子查询及相关优化学习教程,使用子查询时需要注意其对数据库性能的影响,需要的朋友可以参考下
    2015-11-11
  • Mysql-binlog的查看实践

    Mysql-binlog的查看实践

    MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML语句,本文主要介绍了Mysql-binlog的查看实践,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • CentOS 7搭建MySQL主从复制集群的全过程

    CentOS 7搭建MySQL主从复制集群的全过程

    在实际生产环境中,单个 MySQL 实例存在单点故障和性能瓶颈,本文将以 CentOS 7 为例,手把手教你搭建一套标准的 MySQL 主从复制集群(Master-Slave Replication),实现读写分离与数据热备,需要的朋友可以参考下
    2026-05-05
  • sql注入数据库原理详情介绍

    sql注入数据库原理详情介绍

    这篇文章主要介绍了sql注入数据库原理详情介绍,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-09-09
  • MySQL的联合索引范围条件失效问题解决办法

    MySQL的联合索引范围条件失效问题解决办法

    在数据库优化中,索引是一项至关重要的技术手段,可以显著提升查询性能,下面这篇文章主要介绍了MySQL的联合索引范围条件失效问题解决的相关资料,文中介绍的非常非常详细,需要的朋友可以参考下
    2026-04-04
  • 将图片储存在MySQL数据库中的几种方法

    将图片储存在MySQL数据库中的几种方法

    今天小编就为大家分享一篇关于将图片储存在MySQL数据库中的几种方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • mysql SQL语句积累

    mysql SQL语句积累

    mysql SQL语句积累,学习mysql的朋友可以参考下。
    2011-09-09

最新评论