SQL Server数据导入到Oracle中的方法
sqlserver到oracle数据无损迁移
sqlserver到oracle数据无损迁移
编者:liuli10@
版本:V1.7
最后修订日期:2015-11-21
第一章简介
1.1数据迁移
随着时代发展数据越来越被重视,而很多时候,当系统需要更新换代的时候,升级后系统所是有的数据库与当前系统的数据库并不一致,此时不仅需要数据割接,最重要的是:如何能将老系统中的数据无损的割接到新系统、新数据库中。因此,结合项目实战经验,针对从windows平台下数据库sqlserver到linux平台下oracle数据库的数据无损迁移进行总结。
1.2数据库简介
一般此处会有很多数据库以及出品公司的历史以及发展历程,在编者看来然而并没有什么大用途,百度百科都可以搜索的到,因此本章结束,直接进入实战总结环节。
第二章sqlserver数据导出
2.1sqlserver数据导出命令
当然不可否认windows为sqlserver提供了强大的图形化平台,导出数据变得只需要点一点就能完成,然而这样的数据导出对于大批量有要求的操作,是极其劳神伤财的,因此,必须要通过命令行进行格式化导出,因此,这里介绍sqlserver 本机数据库导出命令。
2.1.1bcp命令以及参数介绍
/liyanmingkong/article/details/6087674
/uid-25472509-id-4304562.html
/link?url=WV2JJM4JHxR7Qct8rr_-499zPc3aP_7E5rOt5l yEnG_Mj_tE9_-ZN1JPE2Vc2wRpkO8QkNGNLVznDfMgniCOnxXhK5jQppNpZk8 Jo1x8o23
ORACLE和SQLSERVER的数据同步常用方法
ORACLE和SQLSERVER的数据同步常⽤⽅法ORACLE和SQL SERVER的数据同步常⽤⽅法
1. ⾃⼰编程,或者第三⽅⼯具
2. 在sqlserver中,使⽤linkedserver,访问oracle,然后编写job进⾏数据同步
3. 在oracle中,使⽤透明⽹关,访问sqlserver,进⾏数据同步
4. sqlserver触发器和存储过程定时排程刷新机制
5. 专门的ETL⼯具, SSIS/OWB/Data Stage/Power Center...
6. 表数据同步⽤goldengate
7. oracle访问sql server⽤gateway/dblink
SqlServer2005移植到Oracle
从SQL 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进行数据库的创建,如图所示:
图表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,如图所示:
用SQL DTS实现SQL Server到Oracle的数据迁移
用SQL DTS实现SQL Server到Oracle的数据迁移
陈拓 chentuo@
2005 年 2月 15 日 最后修改日期 2005 年 3月 27 日
以下的操作以 SQL Server2000 和 Oracle 10g 为例。
一、 在Oracle数据库中建立一个新帐户
如果已有可用用户,跳过这一部分。
1.用SQL*plus创建新用户
l建立一个新帐户 ct,PL/SQL 脚本如下:
SET ECHO OFF
PROMPT
PROMPT specify password for ct as parameter 1 (ct):
DEFINE pass = &1
PROMPT
PROMPT specify default tablespeace for ct as parameter 2 (USERS):
DEFINE tbs = &2
PROMPT
PROMPT specify temporary tablespace for CT as parameter 3 (TEMP):
DEFINE ttbs = &3
PROMPT
PROMPT specify password for SYS as parameter 4 (sys):
DEFINE pass_sys = &4
PROMPT
PROMPT specify log path as parameter 5 (D:\oracle\product\10.1.0\):
DEFINE log_path = &5
PROMPT
-- The first dot in the spool command below is
sqlserver数据导入oracle
需要用到power builder工具,具体操作方法如下:
先打开PB,新建workspace,如图:
起好名字之后,可以看到新的workspace已经建成了:
点击tools-database painter,如图:
之后会出现如下界面:
点击ODB ODBC 添加相应数据源,如图:
在出现的对话框中,选择“用户数据源”或“系统数据源”,下一步,如图:
选择数据源类型,下一步:
数据源的名称起相应的数据库名即可(也可以随便起),服务器名localhost,下一步,如图:
登录方式,默认,或者选择sql登录方式都可以:
默认数据库选择目标数据库,下一步:
默认点击完成:
至此,sqlserver数据源创建完成。Oracle数据源的创建方法——
数据源类型同上:
驱动程序二选一:
数据源名字随意,TNS Service Name选择目标oracle数据库,User id为相应用户名。
点击“OK”,oracle的数据源也创建完成。
数据源创建完成之后,要在ODB ODBC下创建profile,如下:
Profile name直接用数据库的名字命名就可以,数据源分别选择刚刚创建的sqlserver和oracle 数据源,用户名密码作相应输入,两个profile的创建就完成了。
Sqlserver和oracle之间的数据互联要在application中进行,在workspace中新建target,在target选项卡下,选择application,OK:
名字随意,finish:
完成之后,继续在创建完成后的application右键,New:
SQLServer往Oracle导入数据
SQLServer往Oracle导入数据
由于做的软件要求跨平台,要不数据库变成Oracle的,因此需要把SQL Server 2000的数据导入到Oracle 10g中去。发现SQL Server自带的导入导出比较好用!恩恩,现在开始讲一讲怎么吧SQL Server的数据导入到Oracle中。
先说说目的:
在PC机A中安装的Windows系统下SQL Server中有源数据库DBServer。
PC机ip地址:192.168.1.103。主机名:LENOVO-78EB319A
数据库中使用管理员sa,密码lenovo。貌似用不上……
在PC机B中安装的Solaris系统下Oracle中有目标数据库DBServer。
PC机ip地址:192.168.1.105。主机名:vic.MINg
其中DBServer是空数据库,刚刚创建的。
讲A机Windows XP系统SQL Server 2000中数据库DBServer中的表和视图导入到B机Solaris 10系统Oracle 10g中去。
在Solaris下的Oracle中创建用户
Oracle下创建用户赋予权限,在终端中启动 SQL Plus。
创建用户+密码(用户:sa 密码:lenovo)
SQL> create user sa identified by lenovo;
单独赋予用户权限
SQL> grant create session to sa;
SQL> grant create table to sa;
SQL> grant create sequence to sa;
Sql Server导出数据至Oracle方法
Sql Server导出数据至Oracle方法
利用Sql Server的DTS导出
首先,也是最重要的,一定要先设置好要导入到的oracle所对应的数据源驱动。也就是在Windows下创建一个ODBC数据源: 控制面板——管理工具——数据源(ODBC),在"系统DSN” 项卡中点击添加按钮,选择相关Oracle驱动(数据源需要用到oracle的连接服务,所以如果sqlserver与oracle不在同一台机器上的话,要在sql server所在机器上装oracle客户端,并用oracle客户端建一个连接到oracle数据库的服务,建odbc数据源时,会让你选择该服务)。这一点如果你不配置,那么在后面的Sql Server DTS导出数据到oracle时候,它会有一个默认的数据源驱动,但可能版本太早,里面的字段和oracle 10g有些不兼容,这样会造成后面在导出数据的时候出现一些字段转换失败之类的错误。下面以我在本机上的操作截图说明一下:
(1)右击数据库,任务--->导出数据:
(2)选择要导出的数据源,如果针对本机数据库,按照默认选项即可,点击下一
步:
(3)选择要导入的数据源,这一块就是要注意的地方,oracle 10g 数据源在此处为Oracle provide for OLE DB(安装了不同的oracle,数据源驱动可能不一样,这里不是绝对的),如果没有自己注册oracle 10g数据源的话,它上面默认的有一个Microsoft OLE DB Provider for Oracle,切记一定要自己配置。
用Java实现SQL Server到Oracle数据迁移
图1 New Gallery窗口
7)在“创建数据库用户”窗口中输入用户名和口令参数,并选择默认表空间和临时表
图3Manage Libraries 窗口•在“管理库”窗口中选择Libraries 标签。
图11 项目属性窗口
图12 项目属性窗口
⏹在Add Libraries窗口中找到前面设置的SQLServer JSBC 驱动程序库,单击
图13Add Libraries窗口
图14 添加Oracle JDBC驱动程序
●在JDeveloper 10.1.3中写连接SQL Server的JDBC JAVA测试程序:
System.out.println("Error Trace in getConnection() : " + e.getMessage());
}
return con;
}
private String getConnectionUrl(){
return
url+serverName+":"+portNumber+";databaseName="+databaseName+";selectMethod="+ selectMethod+";";
}
private void closeConnection(){
try{
if(con!=null)
con.close();
con=null;
}catch(Exception e){
e.printStackTrace();
}
}
public void displayDbProperties(){
java.sql.DatabaseMetaData dm = null;
通过ORACLE通用连接访问SQLServer数据库的方法
通过ORACLE通用连接访问SQLServer数据库的方法
要通过Oracle通用连接访问SQL Server数据库,需要使用Oracle 的适配器来连接到SQL Server数据库。以下是通过Oracle通用连接访问SQL Server数据库的方法:
1. 安装并配置Oracle通用连接适配器:
- 在Oracle数据库服务器上找到适配器的安装目录。
HS_FDS_CONNECT_INFO = server_name
HS_FDS_TRACE_LEVEL = off
HS_FDS_SHAREABLE_NAME = /usr/local/bin/libodbc.so
其中server_name是SQL Server数据库的主机名。
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME = odbc)
(ORACLE_HOME = /path/to/oracle_home)
(PROGRAM = dg4odbc)
其中/oracle_home是Oracle数据库的安装目录。
2.配置ODBC数据源:
- 在Oracle数据库服务器上安装必要的ODBC驱动程序以连接到SQL Server数据库。
- 在ODBC数据源管理器中配置一个ODBC数据源,以便Oracle数据
库可以通过该数据源连接到SQL Server数据库。
- 确保ODBC数据源名称与initodbc.ora文件中的server_name匹配。
3.创建数据库链接对象:
- 在Oracle数据库服务器上创建一个数据库链接对象,该对象将用
sql server连接Oracle方法(最全)
sql server连接Oracle方法
(一)在SQL Server所在服务器中安装Oracle客户端程序,并设定好TNS
(二)在SQL Server中添加Link Server,设置方法如
下:
以上设置也可以透过执行sql server的存储过程实现。
sp_addlinkedserver & sp_addlinkedsrvlogin
(三)连接建立完成后,就可以执行查询语句了,查询的示例如下:
/*查询*/
select * from openquery(TESTORA, 'SELECT t01,t02 FROM tex_file')
/*插入数据*/
INSERT OPENQUERY(TESTORA, 'select t01 from tex_file')
select 'testabc'
/*更新数据*/
update OPENQUERY(TESTORA, 'select t01 from tex_file') set t01='hellowo'
where t01='testabc'
/*删除数据*/
delete from OPENQUERY(TESTORA, 'select t01 from tex_file')
where t01='hellowo'
(四)到此基本上无什么问题了,但是把这些语句放在sql server的触发器中的时候,问题产生了。
放入触发器中之后,一开始提示:“服务器'XXXXX' 上的MSDTC 不可用”,于是打开MSDTC服务(方法:切换到cmd窗口,运行net start msdtc,或者到控制台的服务里面启动DTC服务),不再提示这个错误,而是提示“MSDTC不能启动分布式事务”。Oh my God,还是不行,于是再次去问谷歌,发现是因为微软提供的驱动不支持分布式事务,于是参照网上的方法(点此查看原始解决方案),修改注册表。
sqlserver迁移到oracle具体实现
sqlserver迁移到oracle具体实现
一、需求背景
因系统业务发展需要,需要对各地数据进行集中管理,其中各地系统都是sqlserver2000数据库,数据大量集中,需要使用oracle数据库,因此涉及sqlserver
数据迁移至oracle数据库的问题。
二、处理步骤
处理步骤分为初始导出和增量交换两个操作步骤进行。
1 、其中初始导出设定一个时间截止时间将之前的业务数据利用数据库导出
功能将数据导出,数据导出后由文件交换服务器传送的方式将初始导出数据导入
到oracle数据库服务器中,然后通过SQLLOAD工具将数据导入。
2、增量交换在初始导出设定一个时间截止后开始启用,增量交换就是在初
始导出完成后,将有变更的数据形成文件,由文件交换服务器传送,最终同步到oracle数据库服务器中,然后通过SQLLOAD工具将数据导入,与初始导出不同
的是,这里要通过程序控制导出的增量数据和导出文件名。
三、初始导出
1.业务数据
业务数据初始导出将利用数据库导出功能将数据以文件的方式拷贝到oracle
数据库服务器进行导入。
步骤:
1)业务数据导成文件
2)业务数据文件拷贝到oracle数据库服务器进行导入
2.实现
2.1.利用导出导入工具实现异构数据迁移
1)sqlserver初始数据利用bcp工具导成csv格式文件
--sqlserver数据导成文件
--预先创建导出表格式文件:
exec master..xp_cmdshell 'bcp master.dbo.sysusers format nul -T -c -f "c:\students.fmt"'
Sql server 迁移到oracle 方案
Sql server 迁移到oracle 方案
1.系统目前运行情况
系统目前采用的数据库是sql server 2005
操作系统平台是windows server 2003
操作系统的配置:16cpu,32g内存
诊断:
目前系统运行较慢,windows server 2003和sql server 2005不能充分利用现有的硬件配置,已经形成瓶颈,导致资源浪费。
2.sql server和oracle的产品比较
1).Oracle为客户端开启会话有两种方式:共享服务和专用服务。在专用服务情况下,监听器为连接请求创建新进程(Unix环境下是Process,Windows下我想应该是Thread吧);共享服务情况下,监听器将客户请求交给Dispatcher,由Dispatcher安排多客户的作业。SQL Server在默认情况下自动为客户端连接创建线程,当有非常多的客户连接时,SQL Server可以使用线程池管理多会话,这类似于Oracle的共享服务。
2).Oracle的内存管理分三块:SGA、PGA、UGA;在MSDN中并没有提及怎样控制SQL Server的内存分配,只是提到SQL Server的虚拟地址空间分成缓冲池占用空间和其余空间,且SQL Server有动态内存管理机制。
3). Oracle的实例一次只能管理一个数据库,数据库在集群环境下可由多个实例管理。而SQL Server单个实例一次能管理多个数据库。Oracle数据库存储方式有OS文件、裸分区、ASM等,SQL Server的数据库存储只能是系统文件。
sql server数据转换服务(DTS)(sql到oracle)详细图解
sql server数据转换服务(DTS)(sql到oracle)详细图解
数据转换服务DTS(sql到oracle),以sql server 2000和oracle 10g为例:
1、打开sql server 2000数据库,选择“数据转换服务”->“本地包”;右键点击“本地包”选择“新建包”,打开“DTS包:<新建包>”界面。
2、点击连接下的“Microsoft OLE DB Provider for SQL Server”按钮,弹出“连接属性”界面,数据库选择要转换的数据库,点击确定。
3、点击连接下的“其它连接”按钮,弹出“连接属性”界面,数据源选择“Microsoft OLE DB Provider for Oracle”;
点击“属性”按钮,弹出“数据链接属性”;
填入相应信息,点击测试连接,如出现测试连接成功,即可进行下一步。
4、选择任务下“转换数据任务”按钮,源连接选择
Microsoft OLE DB Provider for SQL Server,目的连接选择
Microsoft OLE DB Provider for Oracle。
5、右键点击中间的线,点击“属性”;
弹出“转换数据任务属性”界面,源选项卡选择相应sql表;
切换至目的选项卡选择对应oracle表名,如没有点击创建;
切换至转换选项卡,如弹出“转换验证”选择“删除所有转换并重新进行自动映射”,确定,各字段将自动对应
6、右键点击连线,点击“执行步骤”;
如成功,则出现如下提示。
7、查看oracle数据库中的表,检查是否和sql中数据相同。
SqlServer向Oracle数据库迁移方案
***
系统切换实施方案2011年3月
***
2011-3-15
正式切换(前1天) 4.11
删除测试库
建立正式库,配置备份策
略。系统令牌资料导入。
检查奥特莱斯后台系统连接ORACLE乍业。
正式切换(后一天)4.13 按照脚本导入剩下数据
从SQLSERVER迁移到ORACLE教程 图解
数据库迁移自述文件
使用sqldeveloper-3.2.20.09.87
首先创建2个连接、一个Sqlserver 和oracle 。需要注意的是oracle连接用户必须具备高一点的权限。
这里可以对数据类型进行自定义改变。需要改变对象命名为迁移用户的用户名。当前的用户名为taoxs 然后提交
下面开始转换对象。生成sql脚本。注意:运行sql脚本需要用管理员的权限的用户。
Nbs_complainthandle 表在sqlserver中的默认值为”默认值”所以在这里需要将default “默认值去掉”。
还有一个视图v_getdate 转换有问题需要修改为
修改完成后,断开oracle的连接。更换为管理员的用户登录,然后运行脚本
表结构生成完成。
切换为之前的oracle用户登录,然后移动数据
然后点击下一步
生成成功后。删除移植资料库
完成!!!
在sql server中迁移数据的几种方法
在sql server中迁移数据的几种方法
在SQL Server中迁移数据有多种方法,包括备份和还原、复制和
复制、SQL Server Integration Services(SSIS)等。下面将详细介
绍每种方法。
1.备份和还原:
备份和还原是一种常用的数据迁移方法。它通过将源数据库的备
份文件转移到目标服务器,然后使用还原操作将备份文件恢复到目标
数据库中。这种方法适用于小型数据库的迁移,它简单而且效率较高。但是,由于备份和还原是整个数据库级别的迁移方法,所以在迁移大
型数据库时可能需要一段时间来进行备份和还原操作,因此不适合快
速迁移大量数据的场景。
2.复制和复制:
复制和复制是一种常用的数据迁移方法,适用于需要实时或定期
将数据从一个数据库复制到另一个数据库的场景。它通过在源数据库
和目标数据库之间建立一个复制链来实现数据的迁移。复制和复制可
以使用SQL Server自带的事务复制(transactional replication)
或快照复制(snapshot replication)来进行数据迁移。事务复制是一种持续复制的方法,可以保持源数据库和目标数据库之间的数据同步。快照复制则是一种定期复制的方法,每次复制都会生成一个目标数据库的快照。根据数据迁移的需求,可以选择适用的复制方法。
3. SQL Server Integration Services(SSIS):
SQL Server Integration Services(SSIS)是SQL Server中的一种强大的ETL(Extract, Transform, Load)工具。它可以帮助用户进行复杂的数据迁移和转换操作。SSIS具有丰富的数据流转换和任务控件,可以从多个数据源抽取数据,进行不同的转换操作,然后将数据加载到目标数据库中。SSIS可以通过可视化的设计界面来创建数据迁移的工作流程,也可以使用SSIS的脚本任务来编写自定义的数据迁移逻辑。SSIS不仅能够支持SQL Server数据库之间的数据迁移,还可以与其他数据源(如Excel、Oracle等)进行数据交互,非常灵活和强大。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL Server数据导入到Oracle中的方法
如果我们需要将SQL Server数据库中的数据导入到Oracle数据库中,应该如何操
作呢?下文对该方法的步骤进行了详细的介绍,供您借鉴参考之用。
在我们使用SQL Server数据库的过程中,有时需要将SQL Server数据导出,导
入到其他的数据库中,比如导入到Oracle中。
假设要将SQL Server中的Northwind数据库中的Products表导出到Oracle 的Scott用户
首先需要有安装SQL Server企业版
1.打开工具:
开始->程序->Microsoft SQLServer->导入和SQL Server数据导出数据
2.下一步,选择数据源
[数据源]选择“用于SQL Server的Microsoft OLE DB提供程序”,这应该是缺省值。
[服务器]选择要导出数据的服务器,如果是本机,选择(local)
[数据库]选择要导出的数据所在的库,这里选择Northwind
3.下一步,选择目的
[目的]选择Microsoft ODBC for Oracle
[DSN]选择用户/系统DSN一项,然后在下拉列表框中找一个已经连接到了Scott用户的DSN名称。
如果下拉列表中没有,点下拉列表框右侧的[新建],出现创建新数据源界面。
接下来选择系统数据源,下一步,在驱动程序列表中选择Microsoft ODBC for Oracle
下一步,完成,出现Microsoft ODBC for Oracle安装界面
[数据源名称]随便输入,比如sss
[说明]可以不填
[用户名称]填入要SQL Server数据导出到的Oracle用户名称,这里是scott
[服务器]填入要连接到Oracle服务器所使用的服务名,比方说使用sqlplus
scott/tiger@server1可以连接到数据库,那么这里就填入server1。如果本机就是服务器,使用sqlplus scott/tiger即可连接到数据库,这里空着不填即可。
这样就创建好了一个数据源sss,保证下拉列表框中选择了sss一项。
[用户名]填入SQL Server数据导出到的Oracle用户名称,这里是scott
[密码]填入SQL Server数据导出到的Oracle用户使用的密码,这里是tiger
4.下一步,指定表复制或查询
如果要导出的内容是整个表,选择[从源数据库复制表和视图]
如果要导出的内容是表的一部分列,行,可以选择[用一条查询指定要传输的数据],这时需要写出一个查询语句
这里选择第一项[从源数据库复制表和视图]
5.下一步,选择源表和视图
点中要导出的表Products一行的复选框,目的、转换两栏就会出现内容。
目的可以用来选择表名。转换可以用来修改列的数据类型或是整个建表的SQL语句
6.下一步,保存、调度和复制包
选中立即运行
7.下一步,正在完成DTS导入/导出向导
8.完成
提示“成功地将n个表从Microsoft SQLServer复制到了Oracle”
9.完成,关闭导入导出程序
注意:因为oracle的表名都是大写的,而SQL的表可能是大小混写的,所以导入后在oracle里查不到该表,比如这个Products表在oracle里查询就应该写成select * from scott."Products";为了方便查询可以通过批量修改表名为大写以便后面导数据的工作。
---导完数据后执行下面语句,生成把表名修改成大写的操作
select 'ALTER TABLE '||'"'||table_name||'"'||' RENAME TO '||
upper(table_name)||';' from user_tab_comments;
把生成的文件执行即可把此用户下的所有表名修改成大写。