Sql2005移植到Oracle10G
- 格式:doc
- 大小:994.00 KB
- 文档页数:24
1、数据源ODBC设置
管理工具-数据源(ODBC)
点添加,选择oracle
填写数据源、tns名称和用户名
2、导出导入
点击sqlserver下的导入和导出数据(32和64都可)
点击下一步:
选择数据源(sqlserver)、服务器和数据库,然后点下一步:
选择目标:
如果是oracle,再点击属性,填写数据源、用户名密码(勾选允许保存密码),点确定,然
后下一步(可进行测试连接测试oracle是否连通)
默认选择,然后下一步(如果有命令可选编写查询项):
勾选要导出到oracle的表,下一步即可:
注意:
1、选择表然后双击,勾选上“可以为空”属性,避免导入oracle时报错
2、如果提示字段“char”超长,可以在创建目标表时将字段类型更改成“V ARCHAR2”类
型。
进入导入模式,等待结果,如果有一张表出错,则所有导入均会失败:。
如何将SQLServer2005中的数据同步到Oracle中有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据。
不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现。
假设我们这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步到一个MIS系统中的(Oracle9i)那么,我们可以按照以下几步实现数据库的同步。
1.在Oracle中建立对应的contract 和contract_project表,需要同步哪些字段我们就建那些字段到O racle表中。
这里需要注意的是Oracle的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系拉?我们可以在SQLServer下运行:SELECT*FROM msdb.dbo.MSdatatype_mappingsSELECT*FROM msdb.dbo.sysdatatypemappings来查看SQLServer和其他数据库系统的数据类型对应关系。
第一个SQL语句是看SQL转Oracle的类型对应,而第二个表则更详细得显示了各个数据库系统的类型对应。
根据第一个表和我们的SQLServer中的字段类型我们就可以建立好Oracle表了。
ORACLE bigint NUMBER1931ORACLE binary BLOB NULL01ORACLE binary RAW-141ORACLE bit NUMBER131ORACLE char CHAR-141ORACLE char CLOB NULL01ORACLE char VARCHAR2-141ORACLE datetime DATE NULL01ORACLE decimal NUMBER-131ORACLE double precision FLOAT NULL01ORACLE float FLOAT NULL01ORACLE image BLOB NULL01ORACLE int NUMBER1031ORACLE money NUMBER1931ORACLE nchar NCHAR-141ORACLE nchar NCLOB NULL01ORACLE ntext NCLOB NULL01ORACLE numeric NUMBER-131ORACLE nvarchar NCLOB NULL01ORACLE nvarchar NVARCHAR2 -141ORACLE nvarchar(max) NCLOB NULL01ORACLE real REAL NULL01ORACLE smalldatetime DATE NULL01ORACLE smallint NUMBER531ORACLE smallmoney NUMBER1031ORACLE sysname NVARCHAR2 12841ORACLE text CLOB NULL01ORACLE timestamp RAW841ORACLE tinyint NUMBER331ORACLE uniqueidentifier CHAR3841ORACLE varbinary BLOB NULL01ORACLE varbinary RAW-141ORACLE varbinary(max) BLOB NULL01ORACLE varchar CLOB NULL01ORACLE varchar VARCHAR2-141ORACLE varchar(max) CLOB NULL01ORACLE xml NCLOB NULL01ORACLE bigint NUMBER1931ORACLE binary BLOB NULL01ORACLE binary RAW-141ORACLE bit NUMBER131ORACLE char CHAR-141ORACLE char CLOB NULL01ORACLE char VARCHAR2-141ORACLE datetime DATE NULL01ORACLE decimal NUMBER-131ORACLE double precision FLOAT NULL01ORACLE float FLOAT NULL01ORACLE image BLOB NULL01ORACLE int NUMBER1031ORACLE money NUMBER1931ORACLE nchar CHAR-141ORACLE nchar CLOB NULL01ORACLE ntext CLOB NULL01ORACLE numeric NUMBER-131ORACLE nvarchar CLOB NULL01ORACLE nvarchar VARCHAR2-141ORACLE nvarchar(max) CLOB NULL01ORACLE real REAL NULL01ORACLE smalldatetime DATE NULL01ORACLE smallint NUMBER531ORACLE smallmoney NUMBER1031ORACLE sysname VARCHAR212841ORACLE text CLOB NULL01ORACLE timestamp RAW841ORACLE tinyint NUMBER331ORACLE uniqueidentifier CHAR3841ORACLE varbinary BLOB NULL01ORACLE varbinary RAW-141ORACLE varbinary(max) BLOB NULL01ORACLE varchar CLOB NULL01ORACLE varchar VARCHAR2-141ORACLE varchar(max) CLOB NULL01ORACLE xml CLOB NULL01ORACLE bigint NUMBER1931ORACLE binary BLOB NULL01ORACLE binary RAW-141ORACLE bit NUMBER131ORACLE char CHAR-141ORACLE char CLOB NULL01ORACLE char VARCHAR2-141ORACLE datetime DATE NULL01ORACLE decimal NUMBER-131ORACLE double precision FLOAT NULL01ORACLE float FLOAT NULL01ORACLE image BLOB NULL01ORACLE int NUMBER1031ORACLE money NUMBER1931ORACLE nchar NCHAR-141ORACLE nchar NCLOB NULL01ORACLE ntext NCLOB NULL01ORACLE numeric NUMBER-131ORACLE nvarchar NCLOB NULL01ORACLE nvarchar NVARCHAR2 -141ORACLE nvarchar(max) NCLOB NULL01ORACLE real REAL NULL01ORACLE smalldatetime DATE NULL01ORACLE smallint NUMBER531ORACLE smallmoney NUMBER1031ORACLE sysname NVARCHAR2 12841ORACLE text CLOB NULL01ORACLE timestamp RAW841ORACLE tinyint NUMBER331ORACLE uniqueidentifier CHAR3841ORACLE varbinary BLOB NULL01ORACLE varbinary RAW-141ORACLE varbinary(max) BLOB NULL01ORACLE varchar CLOB NULL01ORACLE varchar VARCHAR2-141ORACLE varchar(max) CLOB NULL01ORACLE xml NCLOB NULL012.建立链接服务器。
将SQLServer2005中的数据同步到Oracle中有时由于项⽬开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据。
不同数据库类型之间的数据同步我们可以使⽤链接服务器和SQLAgent来实现。
假设我们这边(SQLServer2005)有⼀个合同管理系统,其中有表contract 和contract_project是需要同步到⼀个MIS系统中的(Oracle9i)那么,我们可以按照以下⼏步实现数据库的同步。
1.在Oracle中建⽴对应的contract 和 contract_project表,需要同步哪些字段我们就建那些字段到Oracle表中。
这⾥需要注意的是Oracle的数据类型和SQLServer的数据类型是不⼀样的,那么他们之间是什么样的关系拉?我们可以在SQLServer下运⾏:SELECT *FROM msdb.dbo.MSdatatype_mappingsSELECT *FROM msdb.dbo.sysdatatypemappings来查看SQLServer和其他数据库系统的数据类型对应关系。
第⼀个SQL语句是看SQL转Oracle的类型对应,⽽第⼆个表则更详细得显⽰了各个数据库系统的类型对应。
根据第⼀个表和我们的SQLServer中的字段类型我们就可以建⽴好Oracle表了。
ORACLE bigint NUMBER 19 3 1ORACLE binary BLOB NULL 0 1ORACLE binary RAW -1 4 1ORACLE bit NUMBER 1 3 1ORACLE char CHAR -1 4 1ORACLE char CLOB NULL 0 1ORACLE char VARCHAR2 -1 4 1ORACLE datetime DATE NULL 0 1ORACLE decimal NUMBER -1 3 1ORACLE double precision FLOAT NULL 0 1ORACLE float FLOAT NULL 0 1ORACLE image BLOB NULL 0 1ORACLE int NUMBER 10 3 1ORACLE money NUMBER 19 3 1ORACLE nchar NCHAR -1 4 1ORACLE nchar NCLOB NULL 0 1ORACLE ntext NCLOB NULL 0 1ORACLE numeric NUMBER -1 3 1ORACLE nvarchar NCLOB NULL 0 1ORACLE nvarchar NVARCHAR2 -1 4 1ORACLE nvarchar(max) NCLOB NULL 0 1ORACLE real REAL NULL 0 1ORACLE smalldatetime DATE NULL 0 1ORACLE smallint NUMBER 5 3 1ORACLE smallmoney NUMBER 10 3 1ORACLE sysname NVARCHAR2 128 4 1ORACLE text CLOB NULL 0 1ORACLE timestamp RAW 8 4 1ORACLE tinyint NUMBER 3 3 1ORACLE uniqueidentifier CHAR 38 4 1ORACLE varbinary BLOB NULL 0 1ORACLE varbinary RAW -1 4 1ORACLE varbinary(max) BLOB NULL 0 1ORACLE varchar CLOB NULL 0 1ORACLE varchar VARCHAR2 -1 4 1ORACLE varchar(max) CLOB NULL 0 1ORACLE xml NCLOB NULL 0 1ORACLE bigint NUMBER 19 3 1ORACLE binary BLOB NULL 0 1ORACLE binary RAW -1 4 1ORACLE bit NUMBER 1 3 1ORACLE char CHAR -1 4 1ORACLE char CLOB NULL 0 1ORACLE char VARCHAR2 -1 4 1ORACLE datetime DATE NULL 0 1ORACLE decimal NUMBER -1 3 1ORACLE double precision FLOAT NULL 0 1ORACLE float FLOAT NULL 0 1ORACLE image BLOB NULL 0 1ORACLE int NUMBER 10 3 1ORACLE money NUMBER 19 3 1ORACLE nchar CHAR -1 4 1ORACLE nchar CLOB NULL 0 1ORACLE ntext CLOB NULL 0 1ORACLE numeric NUMBER -1 3 1ORACLE nvarchar CLOB NULL 0 1ORACLE nvarchar VARCHAR2 -1 4 1ORACLE nvarchar(max) CLOB NULL 0 1ORACLE real REAL NULL 0 1ORACLE smalldatetime DATE NULL 0 1ORACLE smallint NUMBER 5 3 1ORACLE smallmoney NUMBER 10 3 1ORACLE sysname VARCHAR2 128 4 1ORACLE text CLOB NULL 0 1ORACLE timestamp RAW 8 4 1ORACLE tinyint NUMBER 3 3 1ORACLE uniqueidentifier CHAR 38 4 1ORACLE varbinary BLOB NULL 0 1ORACLE varbinary RAW -1 4 1ORACLE varbinary(max) BLOB NULL 0 1ORACLE varchar CLOB NULL 0 1ORACLE varchar VARCHAR2 -1 4 1ORACLE varchar(max) CLOB NULL 0 1ORACLE xml CLOB NULL 0 1ORACLE bigint NUMBER 19 3 1ORACLE binary BLOB NULL 0 1ORACLE binary RAW -1 4 1ORACLE bit NUMBER 1 3 1ORACLE char CHAR -1 4 1ORACLE char CLOB NULL 0 1ORACLE char VARCHAR2 -1 4 1ORACLE datetime DATE NULL 0 1ORACLE decimal NUMBER -1 3 1ORACLE double precision FLOAT NULL 0 1ORACLE float FLOAT NULL 0 1ORACLE image BLOB NULL 0 1ORACLE int NUMBER 10 3 1ORACLE money NUMBER 19 3 1ORACLE nchar NCHAR -1 4 1ORACLE nchar NCLOB NULL 0 1ORACLE ntext NCLOB NULL 0 1ORACLE numeric NUMBER -1 3 1ORACLE nvarchar NCLOB NULL 0 1ORACLE nvarchar NVARCHAR2 -1 4 1ORACLE nvarchar(max) NCLOB NULL 0 1ORACLE real REAL NULL 0 1ORACLE smalldatetime DATE NULL 0 1ORACLE smallint NUMBER 5 3 1ORACLE smallmoney NUMBER 10 3 1ORACLE sysname NVARCHAR2 128 4 1ORACLE text CLOB NULL 0 1ORACLE timestamp RAW 8 4 1ORACLE tinyint NUMBER 3 3 1ORACLE uniqueidentifier CHAR 38 4 1ORACLE varbinary BLOB NULL 0 1ORACLE varbinary RAW -1 4 1ORACLE varbinary(max) BLOB NULL 0 1ORACLE varchar CLOB NULL 0 1ORACLE varchar VARCHAR2 -1 4 1ORACLE varchar(max) CLOB NULL 0 1ORACLE xml NCLOB NULL 0 12.建⽴链接服务器。
Oracle10G新增加员工自动导入到SQL server2005设置方法一、在SQL server建立链接,连接到ORACLE1、服务器对象→链接服务器→右键→新建链接服务器:2、在常规中输入对应参数:3、在安全性中输入对应参数,点确定:4、点确定,生成链接服务器。
对应的sql脚本是:/****** 对象: LinkedServer [LINK_ORACLE] 脚本日期: 07/27/2011 22:03:38 ******/EXEC master.dbo.sp_addlinkedserver @server = N'LINK_ORACLE',@srvproduct=N'oracle', @provider=N'OraOLEDB.Oracle',@datasrc=N'strdb3', @provstr=N'msdaora'/* For security reasons the linked server remote logins password is changed with ######## */EXEC master.dbo.sp_addlinkedsrvlogin@rmtsrvname=N'LINK_ORACLE',@useself=N'False',@locallogin=NULL,@rmtuse r=N'jfp0524',@rmtpassword='jfp0524'GOEXEC master.dbo.sp_serveroption @server=N'LINK_ORACLE',@optname=N'collation compatible', @optvalue=N'false'GOEXEC master.dbo.sp_serveroption @server=N'LINK_ORACLE',@optname=N'data access', @optvalue=N'true'GOEXEC master.dbo.sp_serveroption @server=N'LINK_ORACLE',@optname=N'dist', @optvalue=N'false'GOEXEC master.dbo.sp_serveroption @server=N'LINK_ORACLE',@optname=N'pub', @optvalue=N'false'EXEC master.dbo.sp_serveroption @server=N'LINK_ORACLE',@optname=N'rpc', @optvalue=N'false'GOEXEC master.dbo.sp_serveroption@server=N'LINK_ORACLE',@optname=N'rpc out', @optvalue=N'false'GOEXEC master.dbo.sp_serveroption @server=N'LINK_ORACLE',@optname=N'sub', @optvalue=N'false'GOEXEC master.dbo.sp_serveroption @server=N'LINK_ORACLE',@optname=N'connect timeout', @optvalue=N'0'GOEXEC master.dbo.sp_serveroption @server=N'LINK_ORACLE',@optname=N'collation name', @optvalue=nullGOEXEC master.dbo.sp_serveroption @server=N'LINK_ORACLE',@optname=N'lazy schema validation', @optvalue=N'false'GOEXEC master.dbo.sp_serveroption @server=N'LINK_ORACLE',@optname=N'query timeout', @optvalue=N'0'GOEXEC master.dbo.sp_serveroption@server=N'LINK_ORACLE',@optname=N'use remote collation', @optvalue=N'true'5、在SQL server 查询oracle数据,有两种格式:select*from openquery(link_oracle,'select * from JFP0524.XEMPLOYEE'); select*from[link_oracle]..JFP0524.XEMPLOYEE a WHERE a.employeeid='1444';其中用户名和表名一定要大写,否则出错,JFP0524.XEMPLOYEE是正确的,jfp0524.XEMPLOYEE, JFP0524.xemployee 和jfp0524.xemployee都是错误的。
从SQL server 2005中移植数据到Oracle 10g1.移植前准备在移植前,需要安装必需的各种软件,如下:(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所示的界面,选择“创建数据库”后点击“下一步”:如图表3所示选择第一个“一般用途”然后点击下一步:图表3 选择模板如图标2所示在创建数据库过程中的第3步,在“全局数据库名”中输入数据库名称,SID则会自动默认为全局数据库名,然后点击“下一步”;点击如图表5所示界面中的“确定”按钮系统就开始创建数据库了。
图表5图表6 正在传教数据库最后点击如图表4所示中的“退出”按钮就创建数据库完成了。
图表7 创建数据库完成2.2.登录Oracle打开PL/SQL Developer并用system(数据库默认的用户名)用户身份登录到XQ2DSGN并选择连接为SYSDBA,如图所示:图表8 登录到PLSQL2.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 ' autoexte nd on;1 DATAFILE: 表空间数据文件存放路径2 SIZE: 起初设置为200M3 UNIFORM: 指定区尺寸为128k,如不指定,区尺寸默认为64k4 空间名称xq2dsgn 与数据文件名称xq2dsgn.dbf 不要求相同,可随意命名.5 AUTOEXTEND ON/OFF表示启动/停止自动扩展表空间6alter database datafile ' D:\oradata\xq2dsgn\ xq2dsgn.dbf ' resize 500 m;//手动修改数据文件大小为500M图表10 表空间创建完成删除表空间语句如下:DROP TABLESPACE xq2dsgn INCLUDING CONTENTS AND DATAFILES;2.2.2.创建用户1.建立用户并为用户指定缺省的永久表空间和临时表空间SQL> create user xq2dsgn identified by xq2dsgndefault tablespace xq2dsgntemporary tablespace temp;用户已创建。
PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统,是世界上可以获得的最先进的开放源码的数据库系统,但要实现数据从PostgreSQL迁移至Oracle至今还没有找到直接的工具可以利用,所以我们现在可以借助SqlServer2005的数据导入导出功能和Oracle的SQL*Loader。
一、SqlServer2005导入导出功能我们以PostgreSQL中的表test为例。
1、备份表test为sql格式2、用notepad打开test.sql文件。
用notepad是因为SqlServer和记事本都打不开由PostgreSQL生成的sql文件。
3、把notepad中的数据部分全部拷贝至Excel文件中,记为test.xlsx。
之所以要把数据转移至Exel文件中是为了把这些数据导入SqlServer,当然当数据量很大时就必须用Excel2007或者更高版本,Excel2003只支持65536行记录。
4、Test.xlsx中的数据导入SqlServer2005,详见/qygaojiansheng/archive/2009/04/26/4126364.aspx,这样数据就转移到了SqlServer的表test中。
5、利用SqlServer2005的导入导出工具将test表中的数据导入至Oracle中。
这个过程会遇到很多问题,最致命的一个是数据量很大或者是PostgreSQL数据库中存在非法数据时,导出进程进行中会出现错误而终止,导致失败。
6、SqlServer2005导入导出功能图解,假设test表在示例数据库Northwind中。
右键“Northwind”—>“任务”—>“导出数据”,点击出现下列对话框:点击“下一步”,默认,点击“下一步”,在下拉列表中选择目标数据源,“Oracle provider for OLE DB”,出现下面对话框:点击属性,按照图中所示配置参数,“测试连接”,成功后点击“确定”,一直“下一步”,至勾选“test”,“下一步”,直至“完成”如果没有什么错误出现,就OK了。
SQL SERVER 2005 通过链接服务器访问ORACLE 的快速设定方法1)在SQL_SERVER 2005服务器上安装Oracle 10g的客户端。
假设安装到D:\oracle\ 目录。
如果D:是NTFS 分区,需要将ORACLE安装后的目录设为所使用的用户有权可运行、可添加、可删除。
2)配置D:\oracle\product\10.2.0\client_1\NETWORK\ ADMIN\tnsnames.ora 文件OraLink=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.11)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orl)))3)在DOS模式下运行以下命令以便确认ORACLE客户端安装无误。
sqlplus user/password@OraLink4)打开开始-控制面板-服务,确认Distributed Transaction Coordinator服务已启动。
5)打开SQL SERVER Management Studio,实例名称(OraLink)-服务器对象(右键)-新建连接服务器。
a)链接服务器:写上链接服务器的名字,如:OraTestb) 服务器类型,选择其他数据源c) 访问接口:选择Microsoft OLE DB Provider forOracled) 产品名称:写上Oraclee) 数据源:写上tnsnames.ora 文件中配置的服务名,如:OraLinkf)访问接口字符串:user id=user;password=passwordg)在选择安全性选项页,使用此安装上下文建立连接:1:远程登录:user2:使用密码:passwordh) 确定6)SQL的写法有两种a) 使用T-SQL语法:SELECT * FROM OraTest.ERP.BAS_ITEM_CLASS注意在,SQL查询分析器中输入SQL语句时注意中文的全角半角切换方式!b) 使用PLSQL语法:SELECT * FROM openquery(OraTest,'SELECT * FROM ERP.BAS_ITEM_CLASS ')c)第二种访问方式比第一种约快50%;第二种访问方式跟直连ORACLE的速度相当;第一种访问方式可能会导致一些意外错误,如:该表不存在,或者当前用户没有访问该表的权限等等一些信息。
Oracle 10g透明网关连接Sql Server 2005 配置说明(一) 环境如下:ORACLE 10g 安装在:172.64.8.139 的window server 2003SqlServer 2005安装在:172.64.8.142(二) :下载透明网关10g下,透明网管是一个单独组件,可以到oracle官方网站下载/technology/software/products/database/oracle10g/htdocs/10201winso ft.html,然后搜索10201_gateways_win32.zip,即可下载。
这个安装包有300M。
(三) 安装透明网关:注意:安装之前要必须要将原有的数据库服务器启动起来,不然会重复安装OraTg10g_home1数据库软件,这样就会有2个数据库软件。
1、下载10201_gateways_win32.zip插件,并解压。
2、进入10201_gateways_win32文件夹,点击setup.exe。
3、点击下一步选择安装的路径,路径是D:\oracle\product\10.2.0\db_1文件夹(这里是我的oracel的安装路径,根据自己机器的路径修改)。
4、点击下一步,选择Oracle Transparent Gateway for Microsoft SQL Server 10.2.0.1.0,点击下一步.5、填写SQL服务器名和SQL数据库名6、点击安装,安装完成之后会在D:\oracle\product\10.2.0\db_1文件下多出一个文件夹tg4msql,即安装成功。
(四) 配置:1. 在Oracle的D:\oracle\product\10.2.0\db_1\tg4msql\admin目录下,打开inittg4msql.ora,添加配置如图:注意红色部分2、配置Oracle的D:\oracle\product\10.2.0\db_1\network\admin目录下的listener.ora。
数据迁移——关于将Oracle 10g数据表迁移到SQL Server 2005数据库图解将Oralce10g数据库(源数据库)数据抽取到SQL Server2005数据库(目标数据库)必须先配置Oracle数据源,关于数据源配置请参考此文档Oracle 10g数据源配置.doc(双击此图标打开)1、选择目标数据库,右击选择任务>导入数据,如下图所示:点击,进入如下界面2、如上图点击<下一步>进入如下界面,点击下拉框选择Oracle Provider for OLE DB选项3、选择好数据源,点击当前窗体中的属性按钮,跳出下图所示的窗体4、配置数据源连接,数据源和密码和我们已配置好的数据源信息相对应,选择复选框<允许保存密码>,点击<测试连接>按钮,如果提示测试连接成功,O(∩_∩)O哈哈,恭喜你配置连接成功,点击<确定>,点击<下一步>5、如上窗体点击下一步按钮,进入如下窗体,确定目标数据库配置信息无误后点击<下一步>6、点击上窗体的<下一步>后,跳出如下窗体,继续点击<下一步>7、点击如上窗体的<下一步>按钮,跳出如下窗体,选择需要迁移的表(选中相应表前的复选框),选好后点击<下一步>按钮。
8、如果迁移的表数量比较多,会报出如下警告,所以对于很多表进行迁移时最好分批进行迁移9、如果在迁移数据时,跳出如下警告,是因为Oracle数据库中的极个别数据类型在SQL Server不存在,所以不识别,当前本人操作出现警告原因是因为Oracle 存在number数据类型(其中两张表存在此number类型,如报出的警告所示,分别是AAENDO_POL表和AAPAY_POL表),而SQL Server不识别此类型,遇到此情况的解决办法是:点击此两张表对应的如此图中的<编辑>按钮10、点击<编辑>按钮进入如下窗体,将在Oracle数据库中存在类型是number类型的字段改为对应SQL Server中的decimal类型,修改完成后点击确定按钮11、当点击如上图中的<确定>按钮,跳出如下窗体,继续点击<下一步>12、如下图点击<完成>按钮,开始执行数据迁移任务13、当迁移完成,并且无误后,如下图所示,状态全部显示成功14、此时查看目标数据库,会看到已将Oracle数据库中我们需要迁移的表迁移到了SQL Server数据库注意:此功能无法迁移源数据表的主外键,索引。
从SQL server 2005中移植数据到Oracle 10g1.移植前准备在移植前,需要安装必需的各种软件,如下:(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所示的界面,选择“创建数据库”后点击“下一步”:如图表3所示选择第一个“一般用途”然后点击下一步:图表3 选择模板如图标2所示在创建数据库过程中的第3步,在“全局数据库名”中输入数据库名称,SID则会自动默认为全局数据库名,然后点击“下一步”;点击如图表5所示界面中的“确定”按钮系统就开始创建数据库了。
图表5图表6 正在传教数据库最后点击如图表4所示中的“退出”按钮就创建数据库完成了。
图表7 创建数据库完成2.2.登录Oracle打开PL/SQL Developer并用system(数据库默认的用户名)用户身份登录到XQ2DSGN并选择连接为SYSDBA,如图所示:图表8 登录到PLSQL2.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 ' autoexte nd on;1 DATAFILE: 表空间数据文件存放路径补充:路劲必须先建立,不然会报”系统找不到指定的路径”2 SIZE: 起初设置为200M3 UNIFORM: 指定区尺寸为128k,如不指定,区尺寸默认为64k4 空间名称xq2dsgn 与数据文件名称xq2dsgn.dbf 不要求相同,可随意命名.5 AUTOEXTEND ON/OFF表示启动/停止自动扩展表空间6alter database datafile ' D:\oradata\xq2dsgn\ xq2dsgn.dbf ' resize 500 m;//手动修改数据文件大小为500M图表10 表空间创建完成删除表空间语句如下:DROP TABLESPACE xq2dsgn INCLUDING CONTENTS AND DATAFILES;2.2.2.创建用户1.建立用户并为用户指定缺省的永久表空间和临时表空间SQL> create user xq2dsgn identified by xq2dsgndefault tablespace xq2dsgntemporary tablespace temp;用户已创建。
(user xq2dsgn表示用户名:xq2dsgn,identified by后面表示密码)补充:密码不能以数字开头2.2.3.对用户进行授权(此处的xp2dsgn均为用户ID)授予用户会话的权限如图所示: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 选择目标数据库注意:本人在实际操作时选择上面的目标数据源后,配置等均正常,但是导出时会报错,错误内容:错误0xc00470fe: 数据流任务: 产品级别对于组件“数据转换1”(77) 而言不足。
未深究是何原因.尝试将数据源选择为”Microsoft OLE DB Provider for Oracle”后,其余操作相同,导出正常.(SQL Server 导入和导出向导)(2)导入到本地计算机的属性配置如图所示,在“输入服务器名称”中输入刚才在本计算机上新建的Oracle数据库名称,在“用户名称”和“密码”中输入刚才新建及设定的用户名和密码,点击“测试连接”提示“测试连接成功”则可以点击“确定”并进行下一步操作了。
(注意:选择”允许保存密码”,否则点击”下一步”是会报空密码)图表14 配置属性(3)导入到域中的其他计算机上的属性配置如图所示:其中服务名称输入的是目标计算机的IP和目标Oracle数据库名称。
2.3.4.选择源表和源视图及目标表,并编辑映射选择需要导出的表或者全选(这里建议根据表的类型和复杂程度选择一个或者多个进行导出,以免全选发生错误时很难更正)。
图表15选择源表和源视图编辑映射。
在该图中,在每行的目标表处点击,然后点击“编辑映射”按钮,弹出窗体如下图:(注意:在此处时就可以先将目标里的字段名字转换成大写,这样在点击”编辑SQL”后SQL语句里的字段名也自动变成大写的)点击右上方的“编辑SQL”按钮,弹出如下窗体:下情况:(1)表名、字段名中有小写字母;(2)字段类型不正确;(3)存在EVENTID字段或者其他的uniqueidentifier 16类型的字段(GUID对应的字段);我们需要进行修改:(1)确保引号内的表名、字段名均为大写;(2)字段类型正确;(3)VARCHAR2(38) DEFAULT SYS_GUID() NOT NULL注意:字段名和表名并非必须要大写,不改成大写时,ORACLE也会自动转换,字段名前后会加双引号,表任然可以正常使用.但是以后你在程序里想使用(查,增,删,改)该表时,也必须在字段名前后增加双引号,这样就比较麻烦了.一劳永逸的办法,还是都改成大写,尤其表多,字段多的库.T_T剩下的就是体力活了,你懂的.该表中,我们需要对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 minvalue4744 maxvalue 99999999999999999999999999 start with4744 increment by 1 nocache;用鼠标选中该条语句,并按F8,执行该语句,即创建了一个序列。
说明:该语句中,OBJECTID_STATIONSERIES为序列的名字;Minvalue之后的4744为上面的sql语句最大的objectid值+1即:4743 +1=4744;maxvalue填尽可能大的数字即可。
Start with值同minvalue,increment by1表示每次递增1。
如下图:(4)建立触发器。
同样,在sql窗口,输入以下sql语句:create or replace trigger objectID_stationseriesbefore insert on stationseriesfor each rowdeclare-- local variables herenextid number;beginIF :new.objectid IS NULL or :new.objectid=0THENselect objectid.nextvalinto nextidfrom sys.dual;:new.objectid:=nextid;end if;end objectID;用鼠标选中该条语句,并按F8,执行该语句,即创建了一个StationSeries 表的对objectid自增的触发器。