zoukankan      html  css  js  c++  java
  • SqlServer2005到Oracle

    由于项目需要,最近一直在研究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(人员招募中...)

  • 相关阅读:
    c++ --> 虚函数
    Algorithm --> 全排列
    Algorithm --> 矩阵链乘法
    STL --> set用法
    STL --> list用法
    Algorithm --> 最长公共子序列(LCS)
    Zookeeper使用实例——服务节点管理
    Zookeeper使用实例——分布式共享锁
    Zookeeper初探
    Java设计模式应用——备忘录模式
  • 原文地址:https://www.cnblogs.com/Juvy/p/2159250.html
Copyright © 2011-2022 走看看