从ORACLE移植到DB2
从ORACLE移植到DB2
DB2和Oracle的数据类型比较
下面我通过一些具体的实例来详细演示DB2和Oracle的区别:
一、日期
Oracle的日期用法:
Create table date_demo
( day_demo varchar2(25),
actualDate DATE,
detaildate DATE
);
插入数据
insert into date_demo values ('new years',to_date('01-02-2002','DD-MON-YYYY'),
to_date('01-02-2002','DD-MON-YYYY'),
...;
查看结果:
select * from date_demo;
day_demo actualDate detaildate
------------- -------------- ------------
new years 01-02-2002 01-02-2002
new years 01-02-2002 01-02-2002
......;
DB2的日期用法: Create table date_demo
( day_demo char(25),
actualDate DATE,
detaildate DATE
);
插入数据
insert into date_demo values ('new years',('01-02-2002'),
to_date('01-02-2002'),
......;
查看结果:
select * from date_demo;
day_demo actualDate detaildate
--------------- -------------- ------------
new years 01-02-2002 01-02-2002
new years 01-02-2002 01-02-2002
......;
二、序列
Oracle的序列用法: create table dep (deptno smallint not null,
deptname varchar2(36) not null,
mgrno char(6),
admrdept smallint not null,
location char(30));
create sequence dept_seq start with 200 increment by 1;
接着
insert into dept values
(dept_seq.nextval,'sales','smith',55,'downtown'),
(dept_seq.nextval,'marketing','wong',12,'midtown'),
(dept_seq.nextval,'accounting','fisher',300,'uptown');
select * from dept;
DB2的序列用法:
首先建表:
create table dept
(deptno smallint not null generated always as identity(start with 200,
increment by 1),
deptname varchar(36) not null,
location char(30));
接下来插入数据
insert into dept values
(default,'sales','smith,50,'downtown'),
(default,'marketing','wong',23,'midtown'),
(default,'accounting','fisher'200,'uptown');
查询结果:
select * from dept;
结果和Oracle 的一样。
三、截断大的数据表的内容
Oracle在截断大的数据表提供了一个函数truncate,通过语句truncate table tab_name来清空表中的内容并重组表的空间,truncate 是DDL语句不能回滚。
DB2不支持truncate语句,但提供另外二种方法来解决上面的问题。
(1) 在建表时加选项not logged initially ,当清空表时通过alter table [name] activate not logged initially with empty table
(2)首先在操作系统上建一个空文件empty.del,接着通过import命令import from empty.del of del replace into [table_name]来清空表中的数据并重组表空间。