实践项目 从 mysql 到oracle的移植

一个项目实例:https://github.com/akeenhao/VBlog_Oracle

博客项目:账户管理、文章发表、权限管理、图表生成等。数据库原来是mysql,我改成Oracle。

1.sql语句方面

(0)建表:mysql:DROP TABLE IF EXISTS article ; oracle 会报错,可以直接drop或create table。

(1) 主键生成策略:mysql 在主键列生成语句上加AUTO_INCREMENT;

    Oracle不支持,需要单独处理:例如使用sequence或其他。

(1)特殊字符 `:mysql表名等都用``引起来,Oracle不需要,所以需要删掉`。

(2)数据类型 int bigint 等。需要转成number。例如: int(11)->number(11)

        数据类型:varchar。需要转成 varchar2

        数据类型:text。需要转成  clob

        数据类型:datetime。需要转成 TIMESTAMP(6)

(3)语法 index primary key等

(4)备注 comment:mysql的备注写在每个字段的后面,

        例如state number(11) DEFAULT NULL COMMENT '0表示草稿箱,1表示已发表,2表示已删除',

        Oracle需要改成单独的备注:comment on column TT_****.state   is '0表示草稿箱,1表示已发表,2表示已删除';

(5)主键自增 auto increment

(6)唯一索引等

(7)主外键语句:

        主键:

        mysql:在字段创建时加命令 PRIMARY KEY ( id ),

        oracle:alter table TM_A  add constraint PK_TE primary key (ID)

        外键:

        mysql:CONSTRAINT article_ibfk_1 FOREIGN KEY ( cid ) REFERENCES category ( id )

        Oracle:alter table  table_** add constraint fk_g_id foreign key (ALA_ID)  references tm_aroup (ID);

(9) 特殊字符:user uid 谨慎使用

(10)插入数据:& Oracle认为&size是变量,如果有字符串里含有&,则可以用‘fdasfd‘||’&‘||’fdsaf'来转换。


2.程序方面

(1)主键生成策略  用户输入、自动、uuid等

(2)使用mybatis xml文件修改 :遍历的语法<foreach>要从代码里进行,sql里不能活性使用。

(3)一个mybatismap里的sql,不能含有多个sql块。

(4)主键自增实现,用trigger触发器。


暂时这些。后续再有再补充。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容