oracle转mysql总结
ares-sdk初始开发测试使用的是oracle数据库,由于宁波通商的特殊需要,必须把数据库环境从oracle转向mysql。 现对转换过程中出现的问题及经验总结如下:
主键生成策略
创建一个专门记录序列的表sequence,记录有当前序列号,序列的间隔如+1
创建记录当前序列的表
DROP TABLE IF EXISTS sequence;
CREATE TABLE sequence (
name VARCHAR(50) NOT NULL,
current_value INT NOT NULL,
increment INT NOT NULL DEFAULT 1,
PRIMARY KEY (name)
) ENGINE=InnoDB;
INSERT INTO sequence VALUES ('MovieSeq',3,5);
创建一个获取当前序列的function
DROP FUNCTION IF EXISTS currval;
CREATE FUNCTION currval (seq_name VARCHAR(50))
RETURNS INTEGER
CONTAINS SQL
BEGIN
DECLARE value INTEGER;
SET value = 0;
SELECT current_value INTO value
FROM sequence
WHERE name = seq_name;
RETURN value;
END;
获取下一个数值..先在sequence里面调用update当前最大数值+1然后再调用currval获得当前数值
DROP FUNCTION IF EXISTS nextval;
DELIMITER $
CREATE FUNCTION nextval (seq_name VARCHAR(50))
RETURNS INTEGER
CONTAINS SQL
BEGIN
UPDATE sequence
SET current_value = current_value + increment
WHERE name = seq_name;
RETURN currval(seq_name);
END$
DELIMITER ;
DROP FUNCTION IF EXISTS setval;
DELIMITER $
CREATE FUNCTION setval (seq_name VARCHAR(50), value INTEGER)
RETURNS INTEGER
CONTAINS SQL
BEGIN
UPDATE sequence
SET current_value = value
WHERE name = seq_name;
RETURN currval(seq_name);
END$
DELIMITER ;
如果以上语句执行有异常请先执行这句:set global logbintrustfunctioncreators=TRUE;
插入时的主键生成:
mysql: SELECT MMC.NEXTVAL('SEQ_MD_ENTITY_ATTRIBUTE')
oracle: select MMC.SEQ_MD_ENTITY_ATTRIBUTE.nextval from dual
日期处理
mysql : DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s')
oracle: TO_CHAR(SYSDATE,'YYYY-MM-DD hh24:mi:ss')
nvl函数
mysql: ifnull(A.USER_KPI,0)
oracle: NVL(A.USER_KPI,0)
to_number
oracle 的 to_number
mysql不需要
关键字、保留字
涉及到关键字,mysql关键字需要加上``号
mysql: PARA_VALUE as `KEY`
oracle : PARA_VALUE as KEY
rownum
Unknown column 'rownum' in 'where clause'
oracle自定义sql中如果使用了rownum=1 mysql中可以写成limit 1
大小写问题
在oracle中一般情况下不区分大小写
但在MySQL中,所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。
解决的办法是把mysql的数据库名和oracle的大小写保持一致,
表名与应用程序中sql字符串中的表名保持一致,
如果应用程序中字段名用了双引号,那请把sql中的字段名大小写与双引号里的字符保持一致。
如果你的应用程序所引用的表名、字段没有统一大小写,那麻烦就大了。
字符串截取
mysql:
截取log_data从逗号开始之后的字符:
SELECT substring_index(log_data,',',-1)
FROM nbts.log where event_id='150002' and log_id ='a2a421734c7e47dd8a8b';
截取log_data从逗号开始之前的字符:
SELECT substring_index(log_data,',',1)
FROM nbts.log where event_id='150002' and log_id ='a2a421734c7e47dd8a8b';
oracle :
截取log_data从逗号开始之后的字符:
SELECT SUBSTR(log_data, INSTR(log_data, ',', 1, 1) +1) AS app_ver_id
FROM nbts.log where event_id='150002' and log_id ='a2a421734c7e47dd8a8b';
截取log_data从逗号开始之前的字符:
SELECT SUBSTR(log_data,0,INSTR(log_data, ',', 1, 1) - 1) AS app_ver_id
FROM nbts.log where event_id='150002' and log_id ='a2a421734c7e47dd8a8b';
字符串格式化
mysql:CONCAT
oracle:TO_CHAR
主键长度问题
在迁移到mysql后可能会出现主键长度太短,需要增加长度。
相关推荐
Dbmover for Mysql to Oracle 是高效的将Mysql导入到Oracle数据库的工具。 使用DBMover可以灵活定义Mysql和Oracle之间表和字段的对照关系,也可以在DBMover创建一个查询,把查询结果当作源表转入到Oracle中。 ...
MySQL到Oracle转换是一个常见的任务,特别是在企业级应用迁移或整合过程中。这个工具专注于将MySQL的数据库结构和数据转换为Oracle数据库兼容的格式。下面将详细解释这个过程涉及的知识点。 1. **SQL语言的差异**:...
mysql 转换oracle工具,很小,但很好用,记住oracle的表名称和字段名称不能超过30,否则转换失败的
MySQL to Oracle MySQL 转 Oracle亲自测试,好用
MySQL到Oracle的数据迁移是一项常见的任务,特别是在企业级应用中,可能因为各种原因需要从MySQL迁移到功能更强大的Oracle数据库系统。下面将详细讲解这个过程涉及的关键知识点。 首先,我们需要了解MySQL和Oracle...
在IT行业中,数据库迁移是一项常见的任务,特别是在不同的数据库系统之间进行转换时,如从MySQL迁移到Oracle。这一过程不仅涉及到数据的迁移,还涉及到SQL语法、函数、数据类型等多方面的差异处理。以下是从给定文件...
【标题】"Mysql转Oracle"的项目是一个关于将基于MySQL的数据系统迁移至Oracle数据库的实践案例。在软件开发中,这种迁移可能由于多种原因,如性能需求、企业标准、功能扩展等。这个压缩包中包含的资源可能帮助开发者...
Convert Mysql to Oracle功能特点 可能转换所有的Mysql字段类型 支持所有版本的Mysql 可以将数据合并到已经存在的ORACLE表中 非常容易使用的向导模式 支持所有版本的Mysql字符集 对超大数据表的导出进行了优化处理
自己整理的关于MySQL转Oracle的记录文档,使用最新版本SQL Developer,官网即可下载,无需安装解压即可运行,附送mysql-connector-java-5.0.8链接包。文档末位对转换数据库之后索引、表空间移动有提供对应SQL,喜欢...
Convert Mysql to Oracle 最新版本:4.0 Convert Mysql to Oracle是一个免费的数据库转换工具,实现快速安全地将Mysql数据库导入为ORACLE数据库。 Convert Mysql to Oracle 功能特点 可以转换所有的Mysql字段类型 ...
首先,"Mysql数据库转oracle工具"通常是指能够帮助用户无缝地将MySQL中的数据迁移到Oracle数据库的应用程序。这样的工具简化了手动迁移过程,减少了数据类型转换、表结构适配和数据关联等复杂工作。在描述中提到的...
### jeesite 从 MySQL 转换到 Oracle #### 开源框架jeesite数据库迁移:MySQL至Oracle 本文档将详细介绍如何将开源框架jeesite的数据库从MySQL转换为Oracle的过程,整个过程较为简单,主要涉及对项目的几个关键...
此工具可以把sqlite mysql 和oracle数据互转 不会乱码丢数据 操作简单 只需要输入正确的sql连接字符串选择表设置分页就可以了 工具无一万条数据的限制
MySQL和Oracle都是广泛使用的数据库管理系统,分别在开源和企业级市场占据重要地位。在实际的业务环境中,由于各种原因,如系统升级、合并或技术选型的变化,有时我们需要将数据从MySQL迁移到Oracle,或者反之。这时...
### Oracle SQL Developer Migration Workbench (MySQL to Oracle) #### 概述 随着企业信息化建设的不断深入,数据库迁移已经成为一种常见的需求。特别是在不同数据库系统之间的数据迁移过程中,如何保证数据的...
MySQL到Oracle数据库转换工具是一种专门用于将MySQL数据库的数据和结构迁移至Oracle数据库的应用程序。这个过程通常涉及到数据的导出、格式转换以及导入,确保在两个不同数据库系统间的数据一致性。以下是对这一转换...
### Oracle的表结构转成MySQL的表结构 #### 功能概述 本文介绍了一种将Oracle数据库中的表结构转换为MySQL数据库表结构的方法。通过编写一个PL/SQL函数`fnc_table_to_mysql`来实现这一目标。该函数可以接受四个参数...
### MySQL到Oracle数据库转换的关键知识点 #### 一、MySQL到Oracle数据库转换的总体流程 **1. 分表结构及表数据两次导出** - **原因**:由于MySQL与Oracle数据库之间的语法差异较大,一次性导出后直接进行转换...
MySQL 到 Oracle 数据库转换指南 在实际项目中,我们经常会遇到从 MySQL 转换到 Oracle 数据库的情况。这两种数据库有很多具体的应用不同,导致我们需要手动转换数据库结构和数据。本文将详细介绍从 MySQL 转换到 ...