zoukankan      html  css  js  c++  java
  • 从MSSQL server 2005中移植数据到Oracle 10g

     

    1. 移植前准备

    在移植前,需要安装必需的各种软件,如下:

    1).安装好SQL server 2005的补丁包和SP2

    2).安装Oracle安装包里的oracle客户端浏览器(PL/SQL Developer)。(可以根据需要按照汉化补丁,汉化包不安装也可)

    3).硬件要求:在Oracle数据库所在的硬盘保持足够剩余空间(至少有2GB的空间剩余);建议在启用Oracle服务时机器的内存不少于2GB

    没有特别说明的情况下,本文的数据移植是针对普通的属性数据。

    2. 移植

    2.1. 创建数据库

    打开Oracle中的Database Configuration Assistant进行数据库的创建,如图所示:

    wps_clip_image-3360

    图表 1 打开Database Configuration Assistant

     

    进入Database Configuration Assistant后点击“下一步”,然后出现如图表2所示的界面,选择“创建数据库”后点击“下一步”:

     

    wps_clip_image-13059

    图表 2 创建数据库

     

    如图表3所示选择第一个“一般用途”然后点击下一步:

    wps_clip_image-25703

    图表 3 选择模板

     

       如图标2所示在创建数据库过程中的第3步,在“全局数据库名”中输入数据库名称,SID则会自动默认为全局数据库名,然后点击“下一步”;

    wps_clip_image-23300

    图表 4 创建数据库

     

         点击如图表5所示界面中的“确定”按钮系统就开始创建数据库了。

    wps_clip_image-15099

    图表 5

     

    wps_clip_image-25372

    图表 6 正在传教数据库

     

    最后点击如图表4所示中的“退出”按钮就创建数据库完成了。

    wps_clip_image-6233

    图表 7 创建数据库完成

     

    2.2. 登录Oracle

    打开PL/SQL Developer并用system(数据库默认的用户名)用户身份登录到XQ2DSGN并选择连接为SYSDBA,如图所示:

     

    wps_clip_image-7860

    图表 8 登录到PLSQL

     

    2.2.1. 创建表空间

    创建表空间的sql语句:

    SQL>create tablespace xq2dsgn datafile 'G:oracleproduct10.2.0oradataxq2dsgnxq2dsgn.dbf' size 2048m autoextend on next 10m maxsize unlimited ;

     

    (参考:

    通过PL/SQL Developer登录到Oracle数据库上打开菜单:文件/新建/命令窗口 ,打开一个命令窗口然后在该命令窗口中执行脚本创建和删除表空间,新建用户和授权的操作,如图所示:

    wps_clip_image-19611

    图表 9 打开命令窗口

     

    创建表空间

     

    Sql>create tablespace xqds2gn datafile ' D:oradataxq2dsgn xq2dsgn.dbf ' size 200m autoextend on next 10m maxsize unlimited;

    Sql>alter database datafile ' D:oradataxq2dsgn xq2dsgn.dbf ' autoextend on; 

    1 DATAFILE: 表空间数据文件存放路径
    2 SIZE: 起初设置为200M
    3 UNIFORM: 指定区尺寸为128k,如不指定,区尺寸默认为64k
    4 空间名称xq2dsgn 与 数据文件名称 xq2dsgn.dbf 不要求相同,可随意命名.

    5 AUTOEXTEND ON/OFF 表示启动/停止自动扩展表空间

    6 alter database datafile ' D:oradataxq2dsgn xq2dsgn.dbf ' resize 500m;

    //手动修改数据文件大小为500M

    wps_clip_image-9842

    图表 10 表空间创建完成

    删除表空间

    语句如下:

    DROP TABLESPACE xq2dsgn INCLUDING CONTENTS AND DATAFILES;

     

    2.2.2. 创建用户

     

    1.建立用户并为用户指定缺省的永久表空间和临时表空间

     

    SQL> create user xq2dsgn identified by xq2dsgn

    default tablespace xq2dsgn

    temporary tablespace temp;

    用户已创建。(user xq2dsgn表示用户名:xq2dsgnidentified by后面表示密码)

    2.2.3. 对用户进行授权

    授予用户会话的权限如图所示:

    Grant create session to xq2dsgn;

    授予用户创建表格的权限;

    Grant create table to xq2dsgn;

    授予用户设定表空间大小的权限;

    Grant unlimited tablespace to xq2dsgn;

    授予用户DBA权限:

    grant dba to xq2dsgn;

     

    wps_clip_image-15098

    图表 11 创建用户和授权

    2.3. 导出数据

    2.3.1. 打开SQL server导入导出数据向导

    登录到SQL server 2005资源对象管理器选择“数据库”并找到要导出到Oracle中的数据库,然后右击选择“任务”→“导出数据”。如图所示:

     

    wps_clip_image-28969

    图表 12 DTS导出数据

    2.3.2. 选择数据源

    弹出窗体如下图,点击“下一步”

    wps_clip_image-9591

    2.3.3. 选择目标数据库和配置属性

    如下图所示选择“Oracle provider for oledb

    wps_clip_image-11628

    图表 13 选择目标数据库

     

    2)导入到本地计算机的属性配置

    如图所示,在“输入服务器名称”中输入刚才在本计算机上新建的Oracle数据库名称,在“用户名称”和“密码”中输入刚才新建及设定的用户名和密码,点击“测试连接”提示“测试连接成功”则可以点击“确定”并进行下一步操作了。

    wps_clip_image-27301

    图表 14 配置属性

       

    3)导入到域中的其他计算机上的属性配置

    如图所示:其中服务名称输入的是目标计算机的IP和目标Oracle数据库名称。

    wps_clip_image-10400

    2.3.4. 选择源表和源视图及目标表,并编辑映射

    选择需要导出的表或者全选(这里建议根据表的类型和复杂程度选择一个或者多个进行导出,以免全选发生错误时很难更正)。

    wps_clip_image-28396wps_clip_image-14275wps_clip_image-29885wps_clip_image-30529wps_clip_image-911wps_clip_image-8840

    图表 15选择源表和源视图

    编辑映射。在该图中,在每行的目标表处点击,然后点击“编辑映射”按钮,弹出窗体如下图:

    wps_clip_image-15262wps_clip_image-2374

    点击右上方的“编辑SQL”按钮,弹出如下窗体:

    wps_clip_image-9410wps_clip_image-5993

    该窗体显示了oracle数据库中,即将创建的数据库表的sql语句。如果有以下情况:(1)表名、字段名中有小写字母;(2)字段类型不正确;(3)存在EVENTID字段或者其他的uniqueidentifier 16类型的字段(GUID对应的字段);我们需要进行修改:(1)确保引号内的表名、字段名均为大写;(2)字段类型正确;(3VARCHAR2(38) DEFAULT SYS_GUID() NOT NULL

    该表中,我们需要对EVENTID字段进行修改,修改后的窗体如下图:

    wps_clip_image-14548 wps_clip_image-20063

    修改完毕,点击“确定”按钮。

    该步骤,需要依次检查每个表,确认每个表的sql语句无误后,才能进行下一步操作。()

    wps_clip_image-11909有些表名及字段名均存在小写或者大小写均有的现象,直接导入Oracle数据库,则引起使用中的一些错误。因此,我们在这里手工将上图的sql语句中,引号内的表名、字段名全部改为大写,并将“列映射”页面的目标数据字段改为全部大写,如果想要继续使用小写的表名则注意引号的应用这里不做说明.

    2.3.5. 执行导出

    选择完表后点击“下一步”或者点击“完成”如果不出错则提示导入成功如图所示:

    wps_clip_image-16688

    图表 16 执行导入成功

    3. 特殊字段处理

    3.1. 对于自增长字段的处理

    Sql server数据库中,有时会采用自增长的字段做为主键,但oracle数据库中没有这样的字段,因此需要我们单独处理这样的字段。

    以下以StationSeries表的objectid字段为例进行说明。

    StationSeries表的objectidsql server数据库中为int类型,标识增量为1;导入oracle数据库中后,字段类型为integer

    (1) 新建一个sql窗口(登陆plsql后,File主菜单,new >sql window即可)。

    (2) 在该窗口中输入以下sql语句:

    Select max(objectid) from stationseries;

    (3)F8,执行该语句,看到最大ID值为4743。如下图:

    wps_clip_image-28556

    (3) 新建一个序列。在sql窗口,输入以下sql语句:

    create sequence OBJECTID_STATIONSERIES minvalue 4744 maxvalue 99999999999999999999999999 start with 4744 increment by 1 nocache;

    用鼠标选中该条语句,并按F8,执行该语句,即创建了一个序列。

    说明:该语句中,OBJECTID_STATIONSERIES为序列的名字;Minvalue之后的4744为上面的sql语句最大的objectid+1即:4743 +1=4744maxvalue填尽可能大的数字即可。Start with值同minvalueincrement by 1表示每次递增1

    如下图:

    wps_clip_image-29269

    4)建立触发器。

    同样,在sql窗口,输入以下sql语句:

    create or replace trigger objectID_stationseries

      before insert on stationseries 

      for each row

    declare

      -- local variables here

      nextid number;

    begin

      IF :new.objectid IS NULL or :new.objectid=0 THEN

        select objectid.nextval

        into nextid

        from sys.dual;

        :new.objectid:=nextid;

      end if;

    end objectID;

    用鼠标选中该条语句,并按F8,执行该语句,即创建了一个StationSeries表的对objectid自增的触发器。说明:该语句中,objectID_stationseries为触发器的名字。before insert on之后的stationseries为建立触发器的表名。Objectid即为字段。

    经过上述四个步骤,我们就可实现类似sql server数据库中的自动增长字段,而无需更改代码。

    在导入oracle数据库结束后,我们需要检查sql server数据库,对于其他表中的自增字段,也需要重复上述步骤实现在oracle数据库中自增字段。

    至此,从sql server数据库至oracle数据库的移植工作就结束了。

     

  • 相关阅读:
    【Python】异常处理
    【Python】写入文件
    【Python】从文件中读取数据
    【Python】导入类
    【Python】继承
    【Python】使用类和实例
    SQL HAVING
    SQL GROUP BY
    SQL ORDER BY
    SQL CREATE INDEX
  • 原文地址:https://www.cnblogs.com/J-wym/p/3282088.html
Copyright © 2011-2022 走看看