zoukankan      html  css  js  c++  java
  • mysql脚本手动修改成oracle脚本

      今天有一个需求,立了一个新项目,新项目初步定了使用了现有的框架,但数据库要求由原来的mysql改成oracle,所以原来的基础版本的数据库脚本就需要修改成符合oracle的脚本,修改完成后,总结了一下,大致需要修改的地方如下:


    建表:create table
    1、mysql的ID自增长
    2、所有的表名、字段名的引号去掉(包括建表“表名”、“字段名”、主键“字段名”,索引的索引名称、字段名,外键的外键名称、表名、字段名 )
    3、驱动、字符集等去掉
    4、字段注释修改
    5、索引修改
    6、字段的类型修改,以下数据类型对应关系
    mysql                                                                             oracle

    int(5)                                      <-->               number(5,0)             #5为长度,0为小数点精确数
    datetime                                <-->               date
    smallint(5)                             <-->               number(5,0)
    float(5,2)、double(5,2)          <-->               number(5,2)              #5为长度,2为小数精确数
    char(8)、varchar(8)              <-->               varchar2(8)
    text                                       <-->                clob


    示例一:
    mysql:
    CREATE TABLE `fq_permission` (
    `ID` int(11) NOT NULL AUTO_INCREMENT,
    `PID` int(11) DEFAULT NULL COMMENT '父节点名称',
    `NAME` varchar(50) NOT NULL COMMENT '名称',
    `TYPE` varchar(20) DEFAULT NULL COMMENT '类型:菜单or功能',
    `SORT` int(11) DEFAULT NULL COMMENT '排序',
    `URL` varchar(255) DEFAULT NULL,
    `PERM_CODE` varchar(50) DEFAULT NULL COMMENT '菜单编码',
    `ICON` varchar(255) DEFAULT NULL,
    `STATE` varchar(10) DEFAULT NULL,
    `DESCRIPTION` text,
    PRIMARY KEY (`ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=107 DEFAULT CHARSET=utf8;        #转成oracle时,去除驱动、字符集等

    oracle:
    CREATE TABLE fq_permission (                #变化:去引号
    ID NUMBER(11) NOT NULL,                  #变化:修改数据类型、去引号、去自增长
    PID NUMBER(11) DEFAULT NULL ,              #变化:修改数据类型、去引号、去注释
    NAME varchar2(50) NOT NULL ,               #变化:同上
    TYPE varchar2(20) DEFAULT NULL,              #变化:同上
    SORT NUMBER(11) DEFAULT NULL,              #变化:同上
    URL varchar2(255) DEFAULT NULL,                #变化:修改数据类型、去引号
    PERM_CODE varchar2(50) DEFAULT NULL,            #变化:修改数据类型、去引号、去注释
    ICON varchar2(255) DEFAULT NULL,                #变化:修改数据类型、去引号
    STATE varchar2(10) DEFAULT NULL,                #变化:修改数据类型、去引号
    DESCRIPTION clob,                        #变化:修改参数类型、去引号
    PRIMARY KEY (ID)                        #变化:去引号
    );
    COMMENT ON COLUMN fq_permission.PID is '父节点名称';     #字段注释
    COMMENT ON COLUMN fq_permission.NAME is '名称';
    COMMENT ON COLUMN fq_permission.TYPE is '类型:菜单or功能';
    COMMENT ON COLUMN fq_permission.SORT is '排序';
    COMMENT ON COLUMN fq_permission.PERM_CODE is '菜单编码';

    示例二:
    mysql:
    CREATE TABLE `fq_user_role` (
    `ID` int(11) NOT NULL AUTO_INCREMENT,
    `USER_ID` int(11) NOT NULL,
    `ROLE_ID` int(11) NOT NULL,
    PRIMARY KEY (`ID`),
    KEY `FK_USER_ROL_REFERENCE_ROLE` (`ROLE_ID`) USING BTREE,
    KEY `FK_USER_ROL_REFERENCE_USERS` (`USER_ID`) USING BTREE,
    CONSTRAINT `fq_user_role_ibfk_1` FOREIGN KEY (`ROLE_ID`) REFERENCES `fq_role` (`ROLE_ID`),
    CONSTRAINT `fq_user_role_ibfk_2` FOREIGN KEY (`USER_ID`) REFERENCES `fq_user` (`USER_ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

    oracle:
    drop table fq_user_role;
    CREATE TABLE fq_user_role (
    ID number(11) NOT NULL,
    USER_ID number(11) NOT NULL,
    ROLE_ID number(11) NOT NULL,
    PRIMARY KEY (ID),
    CONSTRAINT fq_user_role_ibfk_1 FOREIGN KEY (ROLE_ID) REFERENCES fq_role (ROLE_ID),
    CONSTRAINT fq_user_role_ibfk_2 FOREIGN KEY (USER_ID) REFERENCES fq_user (USER_ID)
    );
    #索引另外创建
    create index FK_USER_ROL_REFERENCE_ROLE on fq_user_role(ROLE_ID);
    create index FK_USER_ROL_REFERENCE_USERS on fq_user_role(USER_ID);

    插入数据:insert into
    1、所有的表名、字段名的引号去掉
    2、日期时间修改
    3、字段对应参数由一对多改成一对一

    示例一
    #一对多改成一对一,去引号
    mysql:
    insert into 'fq_role_permission'('ID','ROLE_ID','PERMISSION_ID') values(1316,13,58),(1317,13,59);

    oracle:
    insert into fq_role_permission(ID,ROLE_ID,PERMISSION_ID) values(1316,13,58);
    insert into fq_role_permission(ID,ROLE_ID,PERMISSION_ID) values(1317,13,59);


    示例二:
    #时间格式修改
    mysql:
    insert into 'fq_user'('USER_ID','LOGIN_NAME','PASSWORD','REG_DATE')
    values (1,'admin','159ae5f48f14e89f3f9f54dc995f1f276d472b54','25-05-2017 10:32:02');

    oracle:
    insert into fq_user(USER_ID,LOGIN_NAME,PASSWORD,REG_DATE,EMAIL)
    values (1,'admin','159ae5f48f14e89f3f9f54dc995f1f276d472b54',to_date('25-05-2017 10:32:02', 'dd-mm-yyyy hh24:mi:ss'));

  • 相关阅读:
    [翻译].NET Shell Extensions
    设计模式复习小结一(Strategy Pattern/Observer Pattern/Decorator Patter/Factory Pattern)
    学习定制自己的博文1
    SQLServer复习文档1(with C#)
    C#学习笔记-基础知识篇(不定期更新)
    C#学习笔记-迭代器模式
    C#学习笔记-组合模式
    C#学习笔记-备忘录模式
    C#学习笔记-适配器模式
    C#学习笔记-状态模式
  • 原文地址:https://www.cnblogs.com/whitemouseV2-0/p/10566230.html
Copyright © 2011-2022 走看看