前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle转mysql

Oracle转mysql

作者头像
一觉睡到小时候
发布2020-12-16 11:24:36
4.7K0
发布2020-12-16 11:24:36
举报
文章被收录于专栏:国产程序员

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

代码语言:javascript
复制
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创建序列

代码语言:javascript
复制
##创建序列
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

代码语言:javascript
复制
##当前值
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

代码语言:javascript
复制
##下一值
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插入序列

代码语言:javascript
复制
##插入序列
INSERT INTO `sequence` (
 `name`,
 `current_value`,
 `increment`
)
VALUES
 ('ZFTJ_HALF_SEQ', 0, 1);

4.5测试

代码语言:javascript
复制
SELECT currval('ZFTJ_HALF_SEQ');
SELECT nextval('ZFTJ_HALF_SEQ');

4.6实战

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

4.7完整sql

代码语言:javascript
复制
##创建序列
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');
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 国产程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.将表中时间类型的字段更改类型,比如CREATE_TIME,UPDATE_TIME
  • 2.在需要转换的数据库页面点击左上方的工具按钮,选择数据传输,选择好数据源和目标数据库
  • 3.修改mysql中时间类型的字段,比如CREATE_TIME,UPDATE_TIME更改成datetime,长度设为0或者为空
  • 4.mysql实现oracle序列
    • 4.1创建序列
      • 4.2实现currval
        • 4.3实现nextval
          • 4.4插入序列
            • 4.5测试
              • 4.6实战
                • 4.7完整sql
                相关产品与服务
                云数据库 SQL Server
                腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档