mysql脚本转成oracle脚本_mysql脚本⼿动修改成oracle脚本今天有⼀个需求,⽴了⼀个新项⽬,新项⽬初步定了使⽤了现有的框架,但数据库要求由原来的mysql改成oracle,所以原来的基础版本的数据库脚本就需要修改成符合oracle的脚本,修改完成后,总结了⼀下,⼤致需要修改的地⽅如下:
建表:create table
1、mysql的ID⾃增长
openstack安装部署工具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,
strcmp函数的返回值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 '菜单编码';
⽰例⼆:php mysql一键环境
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 (
mysql语句转oracleID number(11) NOT NULL,
USER_ID number(11) NOT NULL,
struct格式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'));
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论