从MSSQL server 2005中移植数据到Oracle 10g
body, p, th, td, li, ul, ol, h1, h2, h3, h4, h5, h6, pre
{
font-family: simsun;
line-height: 1.4;
}
body, p, th, td, li, ul, ol, pre
{
font-size: 12px;
}
1. 移植前准备
在移植前,需要安装必需的各种软件,如下:
(1).安装好SQL server 2005的补丁包和SP2。
(2).安装Oracle安装包里的oracle客户端浏览器(PL/SQL Developer)。(可以根据需要按照汉化补丁,汉化包不安装也可)
(3).硬件要求:在Oracle数据库所在的硬盘保持足够剩余空间(至少有2GB的空间剩余);建议在启用Oracle服务时机器的内存不少于2GB。
没有特别说明的情况下,本文的数据移植是针对普通的属性数据。
2. 移植
2.1. 创建数据库
打开Oracle中的Database Configuration Assistant进行数据库的创建,如图所示:
图表 1 打开Database Configuration Assistant
进入Database Configuration Assistant后点击“下一步”,然后出现如图表2所示的界面,选择“创建数据库”后点击“下一步”:
图表 2 创建数据库
如图表3所示选择第一个“一般用途”然后点击下一步:
图表 3 选择模板
如图标2所示在创建数据库过程中的第3步,在“全局数据库名”中输入数据库名称,SID则会自动默认为全局数据库名,然后点击“下一步”;
图表 4 创建数据库
点击如图表5所示界面中的“确定”按钮系统就开始创建数据库了。
图表 5
图表 6 正在传教数据库
最后点击如图表4所示中的“退出”按钮就创建数据库完成了。
图表 7 创建数据库完成
2.2. 登录Oracle
打开PL/SQL Developer并用system(数据库默认的用户名)用户身份登录到XQ2DSGN并选择连接为SYSDBA,如图所示:
图表 8 登录到PLSQL
2.2.1. 创建表空间
创建表空间的sql语句:
SQL>create tablespace xq2dsgn datafile 'G:\oracle\product\10.2.0\oradata\xq2dsgn\xq2dsgn.dbf' size 2048m autoextend on next 10m maxsize unlimited ;
(参考:
通过PL/SQL Developer登录到Oracle数据库上后,打开菜单:文件/新建/命令窗口 ,打开一个命令窗口然后在该命令窗口中执行脚本创建和删除表空间,新建用户和授权的操作,如图所示:
图表 9 打开命令窗口
创建表空间
Sql>create tablespace xqds2gn datafile ' D:\oradata\xq2dsgn\ xq2dsgn.dbf ' size 200m autoextend on next 10m maxsize unlimited;
Sql>alter database datafile ' D:\oradata\xq2dsgn\ 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:\oradata\xq2dsgn\ xq2dsgn.dbf ' resize 500m;
//手动修改数据文件大小为500M
图表 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表示用户名:xq2dsgn,identified by后面表示密码)
2.2.3. 对用户进行授权
授予用户会话的权限如图所示:
Grant create session to xq2dsgn;
授予用户创建表格的权限;
Grant create table to xq2dsgn;
授予用户设定表空间大小的权限;
Grant unlimited tablespace to xq2dsgn;
授予用户DBA权限:
grant dba to xq2dsgn;
图表 11 创建用户和授权
2.3. 导出数据
2.3.1. 打开SQL server导入导出数据向导
登录到SQL server 2005资源对象管理器选择“数据库”并找到要导出到Oracle中的数据库,然后右击选择“任务”→“导出数据”。如图所示:
图表 12 DTS导出数据
2.3.2. 选择数据源
弹出窗体如下图,点击“下一步”
2.3.3. 选择目标数据库和配置属性
如下图所示选择“Oracle provider for oledb”
图表 13 选择目标数据库
(2)导入到本地计算机的属性配置
如图所示,在“输入服务器名称”中输入刚才在本计算机上新建的Oracle数据库名称,在“用户名称”和“密码”中输入刚才新建及设定的用户名和密码,点击“测试连接”提示“测试连接成功”则可以点击“确定”并进行下一步操作了。
图表 14 配置属性
(3)导入到域中的其他计算机上的属性配置
如图所示:其中服务名称输入的是目标计算机的IP和目标Oracle数据库名称。
2.3.4. 选择源表和源视图及目标表,并编辑映射
选择需要导出的表或者全选(这里建议根据表的类型和复杂程度选择一个或者多个进行导出,以免全选发生错误时很难更正)。
图表 15选择源表和源视图
编辑映射。在该图中,在每行的目标表处点击,然后点击“编辑映射”按钮,弹出窗体如下图:
点击右上方的“编辑SQL”按钮,弹出如下窗体:
该窗体显示了oracle数据库中,即将创建的数据库表的sql语句。如果有以下情况:(1)表名、字段名中有小写字母;(2)字段类型不正确;(3)存在EVENTID字段或者其他的uniqueidentifier 16类型的字段(GUID对应的字段);我们需要进行修改:(1)确保引号内的表名、字段名均为大写;(2)字段类型正确;(3)VARCHAR2(38) DEFAULT SYS_GUID() NOT NULL
该表中,我们需要对EVENTID字段进行修改,修改后的窗体如下图:
修改完毕,点击“确定”按钮。
该步骤,需要依次检查每个表,确认每个表的sql语句无误后,才能进行下一步操作。()
有些表名及字段名均存在小写或者大小写均有的现象,直接导入Oracle数据库,则引起使用中的一些错误。因此,我们在这里手工将上图的sql语句中,引号内的表名、字段名全部改为大写,并将“列映射”页面的目标数据字段改为全部大写,如果想要继续使用小写的表名则注意引号的应用这里不做说明.
2.3.5. 执行导出
选择完表后点击“下一步”或者点击“完成”如果不出错则提示导入成功如图所示:
图表 16 执行导入成功
3. 特殊字段处理
3.1. 对于自增长字段的处理
Sql server数据库中,有时会采用自增长的字段做为主键,但oracle数据库中没有这样的字段,因此需要我们单独处理这样的字段。
以下以StationSeries表的objectid字段为例进行说明。
StationSeries表的objectid在sql server数据库中为int类型,标识增量为1;导入oracle数据库中后,字段类型为integer。
(1) 新建一个sql窗口(登陆plsql后,File主菜单,new –>sql window即可)。
(2) 在该窗口中输入以下sql语句:
Select max(objectid) from stationseries;
(3)按F8,执行该语句,看到最大ID值为4743。如下图:
(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=4744;maxvalue填尽可能大的数字即可。Start with值同minvalue,increment by 1表示每次递增1。
如下图:
(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数据库的移植工作就结束了。
从MSSQL server 2005中移植数据到Oracle 10g的更多相关文章
- mssql server 2005还原数据库bak文件与“备份集中的数据库备份与现有的xx数据库不同”解决方法
mssql server 2005还原数据库bak文件,网站使用虚拟主机建站会经常遇到,一般情况下,主机商有在线的管理程序,但有时候没有的话,就需要本地还原备份sql数据库了.这种情况mssql se ...
- SQL Server 2005 中的分区表和索引
SQL Server 2005 中的分区表和索引 SQL Server 2005 69(共 83)对本文的评价是有帮助 - 评价此主题 发布日期 : 3/24/2005 | 更新 ...
- SQL Server 2005中的分区表
记录笔记: 转自 猪八戒学做网站 SQL Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表? SQL Server 2005中的分区表(二):如何添加.查询.修改 ...
- SQL Server 2005 中实现通用的异步触发器架构
在SQL Server 2005中,通过新增的Service Broker可以实现异步触发器的处理功能.本文提供一种使用Service Broker实现的通用异步触发器方法. 在本方法中,通过Serv ...
- SQL Server 2005中的分区表(六):将已分区表转换成普通表(转)
我的俄罗斯名叫作“不折腾不舒服斯基”,所以,不将分区表好好折腾一下,我就是不舒服. 在前面,我们介绍过怎么样直接创建一个分区表,也介绍过怎么将一个普通表转换成一个分区表.那么,这两种方式创建的表有什么 ...
- 浅析SQL Server 2005中的主动式通知机制
一.引言 在开发多人同时访问的Web应用程序(其实不只这类程序)时,开发人员往往会在缓存策略的设计上狠下功夫.这是因为,如果将这种环境下不常变更的数据临时存放在应用程序服务器或是用户机器上的话,可以避 ...
- SQL Server 2005中的CHECKSUM功能
原文:SQL Server 2005中的CHECKSUM功能 转自此处 页面 checksum 是SQL2005的新功能,提供了一种比残缺页检测强大的机制检测IO方面的损坏.以下是详细描述: 页面 C ...
- 使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历
原文:使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历 常常遇到需要向SQL Server插入批量数据,然后在存储过程中对这些数据进行进一步处理的情况.存储过 ...
- SQL Server 2005中设置Reporting Services发布web报表的匿名访问
原文:SQL Server 2005中设置Reporting Services发布web报表的匿名访问 一位朋友提出个问题:集成到SQL Server 2005中的Reporting Services ...
随机推荐
- jQuery组织您钞四----jQuery操作DOM
一.采用jQuery创建节点 节点是DOM基础设施.依据DOM产品规格,Node是一个很宽泛的概念,包含元素.属性.正文.档..实际开发过程中,要创建动态内容,主要操作的节点包括元素. 属性和文本. ...
- git合并远端分支到本地分支的两种方式
作者:zhanhailiang 日期:2014-11-21 在使用版本号工具提交改动之前,都须要通过update先将本地代码更新到最新版本号.SVN通过svn update就能够实现,那么git怎样实 ...
- MVC应用程序使用Web Services(asmx)
原文:MVC应用程序使用Web Services(asmx) 这次,我们练习MVC应用程序中,应用web service.先在MVC应用程序中创建一个目录Services,将用来存储Service.a ...
- CentOS 使用yum命令安装Java SDK(openjdk)
CentOS 6.X 和 5.X 自带有OpenJDK runtime environment (openjdk).它是一个在linux上实现开源的java 平台.CentOS yum 命令 安装 ...
- Java实现缓存(类似于Redis)
Java实现缓存,类似于Redis的实现,可以缓存对象到内存中,提高访问效率.代码如下: import java.util.ArrayList; import java.util.HashMap; i ...
- 关于WIN32.EXE变态木马下载器的解决办法
一.WIN32.EXE的来源:http://fdghewrtewrtyrew.biz/adv/130/win32.exe 二.运行后的表现:此WIN32.EXE通过80和8080端口访问若干个IP,若 ...
- c#登录时保存账号密码到cookie
登陆界面有用户名.密码输入框,一个’记住账号密码‘的复选框. 1.登录时,勾选‘记住账号密码‘复选框,则会把用户名密码保存在客户端cookie里,保存时间为最大值(直到用户清除浏览器缓存或者取消勾选’ ...
- Java 之JavaBean 、EJB 和POJO
由于是创业公司,开发人员较少,所以公司临时决定让几个C的程序猿临时客串Java.所以避免不了有很多基础问题,今天就有两个人都问我,JavaBean和POJO的区别,我可按照自己的理解给他们大致说了下, ...
- View & ViewData
ViewData 似乎没啥好说的,一个向 View 传送数据的字典. ----------------------------------------------------------------- ...
- 显示linux开机时间的脚本
最初的讨论是linux吧吧友@九十钩圈凯_ 发布的主题贴<加到自启动可以看开机时间的玩意> 并给出显示开机秒数的shell语句 [shell] [ $_UTED = 0 ] || noti ...