Juvy

I Believe Persistence.

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

由于项目需要,最近一直在研究SqlServer2005数据库如何迁移到Oracle(10g)中,这里小结一下研究过程中碰到的一些问题(主要分客户端和服务器)

1、服务器:

1.1 操作系统:Window Server 2003.(安装好后设置计算机名:Server_Name)

1.2 安装Oracle10g服务器端(10201_database_win32.zip,文件大小640M左右),安装过程中全部采用默认设置,并且在安装过程的时候顺便安装默认数据库(数据库名orcl),这样系统会自动安装服务监听相关东西(默认监听端口为1521),否则的话,自己配起来很麻烦,在安装数据库的时候有一点需要注意的是字符集的选择,应该选择Unicode-UTF8,这样可以支持多种不同的语言的字符集。

 

2、客户端:

2.1 操作系统Winidows XP Professional Service Pack 2

2.2 安装Oracle10g客户端端(10201_client_win32.zip,文件大小460M左右)

2.3 安装Oracle客户端开发工具(Toad for Oracle).

2.4 添加环境变量(Key:NLS_LANG;Value:SIMPLIFIED CHINESE_CHINA.ZHS16GBK);

3、这个时候就可以通过客户端工具Toad,连接到oracle,如下图所示:

3.1.、建立表空间(TestTableSpace)

3.2、创建用户(用户名:sa;密码:********;授予:DBA, Connect, Resource, Create Session, Create Table等权限,默认表空间TestTableSpace)

4、将SqlServer数据库的表导出成Sql语句,这里有一个需要注意的就是,两个数据库的不同数据类型的对应关系:
SqlServer 转换为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

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 datetime 8
COLUMN12 NUMBER COLUMN12 numeric 13
COLUMN13 NVARCHAR2(10) COLUMN13 nvarchar 10
COLUMN14 RAW(10) COLUMN14 varbinary 10
COLUMN15 TIMESTAMP(6) COLUMN15 datetime 8
COLUMN16 TIMESTAMP(6) WITH LOCAL TIME ZONE COLUMN16 datetime 8
COLUMN17 TIMESTAMP(6) WITH TIME ZONE COLUMN17 datetime 8
COLUMN18 VARCHAR2(10) COLUMN18 nvarchar 10
COLUMN7 INTERVAL DAY(2) TO SECOND(6) COLUMN7 nvarchar 30
COLUMN8 INTERVAL YEAR(2) TO MONTH COLUMN8 nvarchar 14
COLUMN9 LONG COLUMN9 ntext 16
COLUMN10 LONG RAW COLUMN10 image 16
COLUMN11 NCLOB COLUMN11 ntext 16
(提示:你可以通过自己编写一个小工具来导出数据表创建语句)

5、将第四步生成的数据库表创建语句(CreateTable.sql)复制到Oracle服务器的(如:C:\CreateTable.sql)

6、选择开始->运行,然后输入sqlplus,回车,然后在弹出的窗体中登录;

7;登录成功后,输入@C:\CreateTable.sql,数据表就导入完成了。下一不就是导入数据了。

8、在SqlServer中创建“数据库链接”,如下图所示:


9、创建好数据库链接后,就可以打开查询分析器,通过以下查询语句直接进行数据到跨数据库导入了:

insert into [数据库链接名]..用户名.表名select * from [SqlServer数据库名]..[表名]

导入前,必须保证两个表的数据结构一致。

运行查询语句,你就可以在信息窗口中看到“影响多少行。。。”等信息了,大功告成,数据导过去了。

还有一些工作,就是数据表主键约束、外键约束、触发器、存储过程,这些工作,就轻读者自己发挥了。。。

 

 

ASP.NET开发技术交流群: 67511751(人员招募中...)

posted on 2011-08-30 10:38  Juvy  阅读(400)  评论(0编辑  收藏  举报
QQ:1054930154; Email:david.telvent@gmail.com; QQ群:67511751