mysql 切换成 oracle

mysql 切换成 oracle,第1张

在mysql中,数据表的主键是 auto increment

在oracle中,不支持 auto increment

<table> 标签中添加generateKey 子标签,同时需要在oracle中创建sequence。示例:

mysql的排序语句

在oracle中不支持,直接换成

即可

mysql的模糊查询语句

oracle中的concat只支持两个参数,会报参数个数错误,替换成下面的

or

注意,mysql中不支持用 || 的模糊查询

mysql中的别名可以使用uid,但是uid在oracle中是一个保留关键字。替换成oracle之后,注意有别名设置成uid的别名语句是不能通过执行的。(报找不到 from关键字)

用sqlldr从mysql导出一个表的数据到oracle中:

*** 作步骤:

1、进入mysql

mysql>select UUID, CYC_CODE, b03_05, b03_06, b03_07, b03_08, b03_09, b03_10, b03_11, b03_12, Cate_Item_Code, product_name, product_unit

from jb603_jb603_sub3 into outfile 'd:/tmp/603sub.txt'

Query OK, 79537 rows affected (0.48 sec)

mysql>show create table jb603_jb603_sub3

| jb603_jb603_sub3 | CREATE TABLE `jb603_jb603_sub3` (

`UUID` varchar(32) NOT NULL default '',

`CYC_CODE` char(2) NOT NULL default '',

`b03_05` decimal(11,2) default '0.00',

`b03_06` decimal(11,2) default '0.00',

`b03_07` decimal(11,2) default '0.00',

`b03_08` decimal(11,2) default '0.00',

`b03_09` decimal(9,0) default '0',

`b03_10` decimal(11,2) default '0.00',

`b03_11` decimal(11,2) default '0.00',

`b03_12` decimal(11,2) default '0.00',

`Cate_Item_Code` varchar(7) NOT NULL default '',

`product_name` varchar(60) default '',

`product_unit` varchar(20) default '',

PRIMARY KEY (`UUID`,`CYC_CODE`,`Cate_Item_Code`)

) TYPE=InnoDB |

2、将语句整理成oracle支持的格式:

CREATE TABLE jb603_jb603_sub3 (

UUID varchar(32) NOT NULL ,

CYC_CODE char(2) NOT NULL ,

b03_05 number(11,2) ,

b03_06 number(11,2) ,

b03_07 number(11,2) ,

b03_08 number(11,2) ,

b03_09 number(9,0) ,

b03_10 number(11,2) ,

b03_11 number(11,2) ,

b03_12 number(11,2) ,

Cate_Item_Code varchar(7) NOT NULL ,

product_name varchar(60) ,

product_unit varchar(20) ,

PRIMARY KEY (UUID,CYC_CODE,Cate_Item_Code))

3、编写sqlldr控制文件t.ctl

load data

infile 'd:/tmp/603sub.txt'

into table jb603_jb603_sub3

replace

fields terminated by x'09'

(UUID, CYC_CODE, b03_05, b03_06, b03_07, b03_08, b03_09, b03_10, b03_11, b03_12, Cate_Item_Code, product_name, product_unit)

3运行sqlplus /nolog

SQL>conn lt/lt5@ibmlt

建立jb603_jb603_sub3表

SQL> CREATE TABLE jb603_jb603_sub3 (

2UUID varchar(32) NOT NULL ,

3CYC_CODE char(2) NOT NULL ,

4b03_05 number(11,2) ,

5b03_06 number(11,2) ,

6b03_07 number(11,2) ,

7b03_08 number(11,2) ,

8b03_09 number(9,0) ,

9b03_10 number(11,2) ,

10b03_11 number(11,2) ,

11b03_12 number(11,2) ,

12Cate_Item_Code varchar(7) NOT NULL ,

13product_name varchar(60) ,

14product_unit varchar(20) ,

15PRIMARY KEY (UUID,CYC_CODE,Cate_Item_Code))

表已创建。

5、ho进入 *** 作系统命令行

在 *** 作系统命令行运行sqlldr lt/lt_5@ibmlt d:/tmp/t.ctl

提交导入脚本,逻辑记录计数79537

6、exit回到sqlplus查询导入结果

SQL>select count(*)from JB603_JB603_SUB3

COUNT(*)

----------

将mysql中的表结构导出放入oracle中的方法:

1、导出mysql的表结构sql脚本,然后修改mysql中的数据类型为oracle中的数据类型:

MySql与Oracle数据类型的相互转化如下:

2、mysql的建表SQL:

CREATE TABLE `apiindicator` (

`id` int(11) NOT NULL,

`apiid` int(11) DEFAULT NULL COMMENT '关联api信息表(apiinfo)id',

`cnname` varchar(100) DEFAULT NULL COMMENT '指标中文名',

`enname` varchar(60) DEFAULT NULL COMMENT '指标英文名 ',

`description` varchar(1000) DEFAULT NULL,

`datatype` varchar(15) DEFAULT NULL, `isout` bit DEFAULT '1' COMMENT  '是否必须输出 ,默认为输出;0:不输出 1:输出',

`state` int(11) DEFAULT '0',

`isdelete` bit DEFAULT '0' COMMENT '删除标记:0未删除;1已删除',

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Api指标表 '

转化后是:

CREATE TABLE apiindicator (

id integer NOT NULL,

apiid integer DEFAULT NULL COMMENT '关联api信息表(apiinfo)id',

cnname varchar2(100) DEFAULT NULL COMMENT '指标中文名',

enname varchar2(60) DEFAULT NULL COMMENT '指标英文名 ',

description varchar2(1000) DEFAULT NULL,

datatype varchar2(15) DEFAULT NULL, isout bit DEFAULT '1' COMMENT  '是否必须输出 ,默认为输出;0:不输出 1:输出',

state integer DEFAULT '0',

isdelete char(1) DEFAULT '0' COMMENT '删除标记:0-未删除;1-已删除'

)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8352618.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存