从SqlServer 2K移植到Oracle 10g中的简要总结
公司有一个系统是基于SqlServer 2k,现在,应客户要求,移植到Oracle
10g数据库。代码的扩展极其easy,三下五除二,搞定。就是在将数据从SqlServer 2k导入到Oracle 10g数据库中时出现了一些问题。刚开始采用的方案是把表结构和数据导入到Sql脚本中,然后在Oracle数据库中执行Sql脚本。这个过程涉及到数据 库字段类型的转换问题,容易出错。后来采用使用SqlServer
2k的DTS 将数据从SqlServer中导入到Oracle
10g中。工作就这么搞定了,为了方便以后数据类型的转换,方便以后做针对不同数据库的Sql脚本,我把SqlServer 2k和Oracle 10g大部分数据类型都做了一下测试,当然现在只有SqlServer 2k和Oracle 10g数据对应关系。不对应关系如下:
SqlServer 2k转换为Oracle 10g
列名
SqlServer数据类型
SqlServer长度
Oracle数据类型
column1
bigint
8
NUMBER(19)
column2
binary
50
RAW(50)
column3
bit
1
NUMBER(2)
column4
char
10
CHAR(10)
column5
datetime
8
DATE
column6
decimal
9
NUMBER(18)
column7
float
8
BINARY_DOUBLE
column8
image
16
BLOB
column9
int
4
NUMBER(10)
column10
money
8
NUMBER(19,4)
column11
nchar
10
NCHAR(10)
column12
ntext
16
NCLOB
column13
numeric
9
NUMBER(18)
column14
nvarchar
50
NVARCHAR2(50)
column15
real
4
BINARY_FLOAT
column16
smalldatetime
4
DATE
column17
smallint
2
NUMBER(5)
column18
smallmoney
4
NUMBER(10,4)
column19
sql_variant
BLOB
column20
text
16
CLOB
column21
timestamp
8
RAW(8)
column22
tinyint
1
NUMBER(3)
column23
uniqueidentifier
16
BLOB
column24
varbinary
50
RAW(50)
column25
varchar
50
VARCHAR2(50)
Oracle 10g 转换为SqlServer 2k
Oracle列名
Oracle数据类型
SqlServer列名
SqlServer数据类型
SqlServer数据长度
COLUMN1
BINARY_DOUBLE
COLUMN1
float
8
COLUMN2
BINARY_FLOAT
COLUMN2
real
4
COLUMN3
BLOB
COLUMN3
image
16
COLUMN4
CLOB
COLUMN4
ntext
16
COLUMN5
CHAR(10)
COLUMN5
nchar
10
COLUMN6
DATE
COLUMN6
datet
相关文档:
具体步骤就不多说了 ,要导出的SQLSERVER表叫 LDJCUS,主键 Uid (int 自动增长列),导入到Oracle总报错:对象名无效 ,去掉主键列就可以,不知道为什么?难道自动增长的主键列就不能导入到Oracle中???疑惑。。。。 ......
1. /*+ALL_ROWS*/
表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.
例如:
SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN from BSEMPMS WHERE EMP_NO='SCOTT';
2. /*+FIRST_ROWS*/
表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.
例如 ......
connect by 是结构化查询中用到的,其基本语法是:
select ... from tablename start with 条件1
connect by 条件2
where 条件3;
例:
select * from table
start with org_id = 'HBHqfWGWPy'
connect by prior org_id = parent_id;
简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:
......
--创建序列
create sequence innerid
minvalue 1
maxvalue 999999999
start with 1
increment by 1
cache 20
order;
--创建表
create table users(
userid int primary key,
username varchar2(20),
userpwd varchar2(20)
);
select * from users;
insert into users values( ......