Oracle转Mysql


1.将表中时间类型的字段更改类型,比如CREATE_TIME,UPDATE_TIME

ALTER  TABLE  ZFTJ_HALF  MODIFY  CREATE_TIME  TIMESTAMP  WITH  LOCAL  TIME ZONE;

2.在需要转换的数据库页面点击左上方的工具按钮,选择数据传输,选择好数据源和目标数据库


点击开始,进行表转换

3.修改mysql中时间类型的字段,比如CREATE_TIME,UPDATE_TIME更改成datetime,长度设为0或者为空

4.mysql实现oracle序列

4.1创建序列

##创建序列
CREATE TABLE
IF NOT EXISTS `sequence` (
    `name` VARCHAR (50) NOT NULL,
    `current_value` INT (11) NOT NULL,
    `increment` INT (11) NOT NULL DEFAULT '1'
);

4.2实现currval

##当前值
DROP FUNCTION IF EXISTS `currval`;  
CREATE FUNCTION `currval` (seq_name VARCHAR(50)) RETURNS INT (11) 
READS SQL DATA 
DETERMINISTIC
BEGIN
DECLARE VALUE INTEGER ;
SET VALUE = 0 ; 
SELECT current_value INTO VALUE FROM sequence WHERE NAME = seq_name ; 
RETURN VALUE;
END ;

4.3实现nextval

##下一值
DROP FUNCTION IF EXISTS `nextval`;   
CREATE  FUNCTION `nextval`(seq_name VARCHAR(50)) RETURNS int(11)  
DETERMINISTIC  
BEGIN  
UPDATE sequence SET current_value = current_value + increment WHERE NAME = seq_name;   
RETURN currval(seq_name);   
END;

4.4插入序列

##插入序列
INSERT INTO `sequence` (
    `name`,
    `current_value`,
    `increment`
)
VALUES
    ('ZFTJ_HALF_SEQ', 0, 1);

4.5测试

SELECT currval('ZFTJ_HALF_SEQ');
SELECT nextval('ZFTJ_HALF_SEQ');

IOC

4.6实战

对于其他表,在转换成mysql后,确认一下表中数据id的最大值,将最大值+1作为新表序列的current_value。
然后自定义序列名,最好与原序列名称保持一致,执行步骤4.4。
将原sql中的SELECT ZFTJ_SEQ.nextval AS id FROM DUAL替换为新序列的nextval
SELECT nextval('ZFTJ_HALF_SEQ') AS ID

4.7完整sql

##创建序列
CREATE TABLE
IF NOT EXISTS `sequence` (
    `name` VARCHAR (50) NOT NULL,
    `current_value` INT (11) NOT NULL,
    `increment` INT (11) NOT NULL DEFAULT '1'
);

##插入序列
INSERT INTO `sequence` (
    `name`,
    `current_value`,
    `increment`
)
VALUES
    ('ZFTJ_HALF_SEQ', 0, 1);


##当前值
DROP FUNCTION IF EXISTS `currval`;  
CREATE FUNCTION `currval` (seq_name VARCHAR(50)) RETURNS INT (11) 
READS SQL DATA 
DETERMINISTIC
BEGIN
DECLARE VALUE INTEGER ;
SET VALUE = 0 ; 
SELECT current_value INTO VALUE FROM sequence WHERE NAME = seq_name ; 
RETURN VALUE;
END ;


##下一值
DROP FUNCTION IF EXISTS `nextval`;   
CREATE  FUNCTION `nextval`(seq_name VARCHAR(50)) RETURNS int(11)  
DETERMINISTIC  
BEGIN  
UPDATE sequence SET current_value = current_value + increment WHERE NAME = seq_name;   
RETURN currval(seq_name);   
END;


SELECT currval('ZFTJ_HALF_SEQ');
SELECT nextval('ZFTJ_HALF_SEQ');

文章作者: LeePandar
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LeePandar !
评论
 本篇
Oracle转Mysql Oracle转Mysql
1.将表中时间类型的字段更改类型,比如CREATE_TIME,UPDATE_TIMEALTER TABLE ZFTJ_HALF MODIFY CREATE_TIME TIMESTAMP WITH LOCAL TIME ZON
2020-11-17
下一篇 
解读聚合收款码背后的原理 解读聚合收款码背后的原理
前言微信/支付宝收款码大家应该不会陌生,线下小微商户收款大多使用这个,就比如下图。 这种收款方式很方便,微信、支付宝后台申请开通,然后还可以免费申请相关物料。 不过这种方式用户体验其实不是很好,之前有好几次拿出支付宝,却扫了微信支付码。
2020-10-10
  目录