Sql Server数据移到Oracle

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

SQL SERVER 数据移植到oracle的方法大致有两种:

一是利用SQLSERVER 自带的导入导出功能

二是利用Oracle SQL Developer

下面分别介绍这两种方法

一、利用SQLSERVER 自带的导入导出功能

1、首先由于oracle数据库的表名和字段名都是大写,所以要先批量将SQLSERVER的表名和字段名修改成大写

可以利用下面的存储过程批量处理

CREATE proc [dbo].[SqlTranOracle]
as
declare @db nvarchar(4000)
declare @dt nvarchar(4000)
DECLARE c_db CURSOR FOR
select ' sp_rename '''+sysobjects.name+'.'+syscolumns.name 
+''','+ ''''+upper(syscolumns.name)+''''
from sysobjects
join syscolumns
on sysobjects.id = syscolumns.id
where sysobjects.name in (
select name from sysobjects a where a.xtype='u'
)
OPEN c_db

FETCH NEXT FROM c_db INTO @db
WHILE (@@FETCH_STATUS <> -1)
BEGIN
exec sp_executesql @db
FETCH NEXT FROM c_db INTO @db
END
CLOSE c_db
DEALLOCATE c_db
DECLARE c_dt CURSOR FOR
select ' sp_rename '''+a.name+
+''','+ ''''+upper(a.name)+''''
from sysobjects a where a.xtype='u'
open c_dt
FETCH NEXT FROM c_dt INTO @dt
WHILE (@@FETCH_STATUS <> -1)
BEGIN
exec sp_executesql @dt
FETCH NEXT FROM c_dt INTO @dt
END
CLOSE c_dt
DEALLOCATE c_dt

2、就可以一步一步的利用SQLSERVER的导出功能将sqlserver数据导入到oracle

注意: 一般一次不要导入太多的表,容易出错,如果一个表导入失败首先检查字段类型

二、利用Oracle SQL Developer

以下是摘自Oracle官网:

Ⅰ Oracle SQL Developer 是一个免费的图形化数据库开发工具。使用 SQL Developer,您可以浏览数据库对象、运行 SQL 语句和 SQL 脚本,并且还可以编辑和调试 PL/SQL 语句。您还可以运行所提供的任何数量的报表,以及创建和保存您自己的报表。SQL Developer 可以提高工作效率并简化数据库开发任务。

SQL Developer 可以连接到任何 9.2.0.1 版和更高版本的 Oracle 数据库,并且可以在 Windows、Linux 和 Mac OSX 上运行。

Ⅱ Oracle SQL Developer 移植工作台是重新开发的新工具,它极大地扩展了原来的 Oracle 移植工作台的功能和可用性,可以将 Microsoft Access、Microsoft SQL Server 和 MySQL 数据库移植到 Oracle。

移植之驱动配置

1) 检查下你装的Sql Developer的版本,我的是Oracle Sql developer 1.5.3。因为这个工具是免费的,之前我在1.2版本上测试没有通过,所以这里强调下。

2) 就是配置Sql Developer的运行环境,因为如果设置不好,我们将不能连接第三方数据库(非oracle数据库),本文指的就是sql server 2005.

背景知识1:不加载驱动之前,如果我们新建立一个数据库连接时,会出现如下窗口。这里可以连接的数据库

仅仅是Oracle和Access (即是两种默认的数据库)

见图(一)

Sql Server移植到Oracle之Migration Workbench - 沈亮 - Shen Liang

图(一)

怎么可以让SQL Developer可以访问其它数据库?

答案是:添加JDBC 驱动,使其可以访问诸如MS SQL、My Sql、Sybase等数据库.

添加三方数据库支持的方法

点击sql developer的菜单的 选项→ 工具(Tools)→ 首选项(Prefences).见图(二)。

Sql Server移植到Oracle之Migration Workbench - 沈亮 - Shen Liang

图(二)

点击弹出对话框中Database(数据库)选项→Third Party JDBC Drivers→添加条目

(即是你解压的jtds-1.2.2-dist目录下jtds-1.2.2.jar所在的目录名称,

注意要指定到jtds-1.2.2.jar这个文件.)

********************************************************************************************************************************

补充说明,这个应该先说的. 即是我们首先要准备好MS SQL的JDBC驱动.

背景知识2 关于添加条目(

1 这里需要先下载驱动程序

打开jDTS JDBC driver主页(http://jtds.sourceforge.net/)→(点击主页里的下载选项)Download→点击jDTS右边的download→(进入下一页)点击jtds-1.2.2-dist.zip 完成下载

操作见图(三)

Sql Server移植到Oracle之Migration Workbench - 沈亮 - Shen Liang

图(三)

2 解压刚刚下载的jtds-1.2.2-dist,确认该文件夹下有名称为jtds-1.2.2.jar的文件。

3 这个jtds-1.2.2.jar就是上面提到的 添加项目 对应的文件。

4 添加过程见图(四)

Sql Server移植到Oracle之Migration Workbench - 沈亮 - Shen Liang

图(四)

********************************************************************************************************************************

小注:

Append: 如果出现如下的错误(即是SQL SERVER的window验证方式不可用的问题):

 

java.sql.SQLException: I/O Error: SSO Failed: Native SSPI library not loaded. Check the java.library.path system property.

 

可以按照而下方法解决.

1)从jtds-1.2.2-dist.zip里拷贝 'jtds-1.2.2-dist\x86\SSO\ntlmauth.dll 到 SQL Developer安装目录下的>\jdk\jre\bin.

2)重启SQL Developer.

至此我们仅仅是做了可以建立sql server的连接的准备工作,(My sql,Sybase等的下载相关驱动见下说明)。

My sql 的JDBC驱动 下载链接如下:

http://dev.mysql.com/downloads/connector/j/5.0.html

mysql-connector-java-5.0.4.tar.gz(或.zip)压缩包内含有个mysql-connector-java-5.0.4-bin.jar的文件.

Sybase的JDBC驱动 下载链接如下:

http://www.sybase.com/detail?id=1009805

或则点击Sybase中国官网的链接,如下:

http://www.sybase.com.cn/gvswse/site/china/downloads/evaluation.jsp

对应的下列条款

jConnect 4.5 and 5.5 for JDBC

真正的开始

以上只是配置Oracle Sql Developer可以连接Sql server(MS SQL),这是前提.之下的才是移植的步骤

Step 1 :creat a sql server connect

方法同建立Oracle的连接类似,这里不再赘述。截图见图(五):

Sql Server移植到Oracle之Migration Workbench - 沈亮 - Shen Liang

图(五)

补注:这里可能出现连接到sql server2005报错的现象(Faiture-Cannot connect to Microsoft SQL Server on localhost). 请确定你打开了sql server的1433端口(默认).

方法如下:

如果你的OS是Vista的,请先切换 控制面板到经典视图.

... ....控制面板 → 管理工具 → 计算机管理 → 服务与应用程序(左侧选项) → SQL Server 2005 Network Configuration(点开上一步的节点) → 设置TCP/IP属性(右边面板处) → 点击IP address 选项 → 设置IPAll中的TCP Port为1433 → 确定后 重新启动SQL Server服务即可.

① 验证1433端口打开的方法:

Win(微表)+R(或则 点击开始→运行) → 输入CMD → netstat/na → 即可以查看1433端口有没有打开..

② 验证sql developer连接到sql server

输入完连接名(比如sa@sqlserver),用户名(比如SA),密码,主机名(比如localhost)及端口(比如1433)后,如果你点击Retrieve database后,右边的下拉框可以选择数据库,则证明连接成功了.

③再小注 默认如果不Retrieve database,则连接的是Master数据库

Step 2 Create user with system permission

建立个Oracle的system帐号(或则具有类似sys权限的用户)连接

建立此连接的用途:

Ⅰ执行创建下面要用到用户的migration的SQL语句。

Ⅱ 执行移植过程中产生的DDL语句

Ⅲ 以及验证整个过程是不是成功,见图(六)

Sql Server移植到Oracle之Migration Workbench - 沈亮 - Shen Liang

图(六)

Step 3 create migration user

方法:

在Step 2的连接状态下,执行以下Sql 代码

--Creating user migration

CREATE USER migration IDENTIFIED BY migration
DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT CONNECT, RESOURCE, CREATE VIEW, CREATE PUBLIC SYNONYM
TO migration WITH ADMIN OPTION;
GRANT ALTER ANY ROLE, ALTER ANY SEQUENCE,
ALTER ANY TABLE, ALTER TABLESPACE, ALTER ANY TRIGGER,
COMMENT ANY TABLE, CREATE ANY SEQUENCE, CREATE ANY TABLE,
CREATE ANY TRIGGER, CREATE ROLE, CREATE TABLESPACE,
CREATE USER, DROP ANY SEQUENCE, DROP ANY TABLE,
DROP ANY TRIGGER, DROP TABLESPACE, DROP USER,
DROP ANY ROLE, GRANT ANY ROLE, INSERT ANY TABLE,
SELECT ANY TABLE, UPDATE ANY TABLE
TO migration;

--解决用户migration不能登录的问题

GRANT CREATE SESSION TO migration WITH ADMIN OPTION;

step 4 create migration connect and link a repository

完成step 3之后,创建migration连接(用户名migration 密码migration)方法和step 2类似。

创建Repository的方法,sql developer→Migration→Repository Management→Create Repository

关联Repository的方法,右击Migration_test(我的migration帐号的连接名)→选择Migration Repository→

Associate Migration Repository。见下图(七)

Sql Server移植到Oracle之Migration Workbench - 沈亮 - Shen Liang

图(七)

 

Step 5 Capture Microsoft Sql Server

这时你右击之前建立的sql server的连接(我的例子名称是liang_server)→选择Capture Microsoft Sql Server

这时你再看左边栏下的Captured models,将多了个下图样的节点

Sql Server移植到Oracle之Migration Workbench - 沈亮 - Shen Liang

图(八)
Step 6 Convert to Oracle model

右击Step 5刚刚建立的Capture models→选择Convert to Oracle model,这时左边栏的Converted models将多个节点。见下图(九)

Sql Server移植到Oracle之Migration Workbench - 沈亮 - Shen Liang

图(九)

Step 7 Generate Sqls

右击Step 6下的Converted model→点击Generate(生成Oracle能识别的SQL语法)→执行该DDL语句

(在之前建立的System帐号的连接下做,或则有类似sys system权限的帐号连接),见图(十)

Sql Server移植到Oracle之Migration Workbench - 沈亮 - Shen Liang

图(十)

小注:这里将生成一个和oracle对应的用户,比如我的用户名是Dbo_testshen,密码和用户名一致。

当然自己可以修改该脚本 并执行。

这时,表结构已经在该用户下产生了。如果你迫不及待要看此结构。可以通过以下语法去查看(System连接状态下)

Desc dbo_testshen.testa.

将会显示出testa表的结构。

Step 8 Create new connect

建立Step 7中生成的了Oracle用户的连接,方法类似Step 2.我这里生成的用户是Dbo_testshen,不再详说。

Step 9 Move Data

右击Step 6下的Converted model(转移数据至Oracle中)→选择Move Data。如下图(十一、十二)

Sql Server移植到Oracle之Migration Workbench - 沈亮 - Shen Liang

图(十一)

↓ ↓ ↓

Sql Server移植到Oracle之Migration Workbench - 沈亮 - Shen Liang

图(十二)

Step 10 Test

点击Ok,并做测试(查看数据是否转移到Oracle中)

Test Case 1:

select table_name from user_tables(Sql语句如下)

结果如下:

TABLE_NAME 
------------------------------ 
CSVIMP 
FORYOU 
MYTESTFORMATFILES 
TEST_REPLACE 
TESTA 
TESTB 
TESTC 
TESTFULLJOIN1 
TESTFULLJOIN2 
FORTEST 
TESTDATATABLE 
TB22 
DOG_TEST

13 rows selected
Test Case 2:

select * from testb;

结果如下:

EMPID EMPADDR 
---------------------- -------------------- 
1 上海 
2 淮南 
3 合肥 
4 黄山

OverOverOverOverOverOverOverOverOverOverOverOverOverOverOverOverOverOverOver

---对应DBO用户...

updated 12 30

Updated 09/03/24

















本文转自东方之子736651CTO博客,原文链接:http://blog.51cto.com/ecloud/1436978 ,如需转载请自行联系原作者







相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
1天前
|
SQL 关系型数据库 MySQL
:“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versi
:“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versi
6 0
|
5天前
|
Oracle 安全 关系型数据库
Oracle数据守卫(DG):数据的“守护者”与“时光机”
【4月更文挑战第19天】Oracle Data Guard保障数据安全,通过实时维护备库实现故障切换,保证业务连续性。它使用日志传输和应用保持数据同步,如同“时光机”,借助闪回技术能恢复误操作数据。此外,它还提供数据压缩、加密和故障转移等功能,提升数据库安全性与性能。作为数据管理员,理解并善用Data Guard是确保企业数据安全的关键。
|
5天前
|
存储 NoSQL Oracle
Oracle 12c的内存列存储:数据的“闪电侠”
【4月更文挑战第19天】Oracle 12c的内存列存储以超高速度革新数据处理,结合列存储与内存技术,实现快速查询与压缩。它支持向量化查询和并行处理,提升效率,但需合理配置以平衡系统资源。作为数据管理员,应善用此功能,适应业务需求和技术发展。
|
5天前
|
存储 Oracle 关系型数据库
Oracle 12c的多重索引:数据的“多维导航仪”
【4月更文挑战第19天】Oracle 12c的多重索引提升数据查询效率,如同多维导航仪。在同一表上创建针对不同列的多个索引,加速检索过程。虽然过多索引会增加存储和维护成本,但合理选择和使用索引策略,结合位图、函数索引等高级特性,能优化查询,应对复杂场景。数据管理员应善用这些工具,根据需求进行索引管理,支持企业数据分析。
|
5天前
|
存储 Oracle 数据管理
Oracle 12c的自动数据优化(ADO)与热图:数据管理的“瘦身”与“透视”艺术
【4月更文挑战第19天】Oracle 12c的ADO和热图技术革新数据管理。ADO智能清理无用数据,优化存储,提升查询速度,实现数据&quot;瘦身&quot;;热图则以直观的视觉表示展示数据分布和状态,助力识别性能瓶颈,犹如数据的&quot;透视&quot;工具。这两项技术结合,强化数据管理,为企业业务发展保驾护航。
|
5天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL游标属性:数据的“导航仪”与“仪表盘”
【4月更文挑战第19天】Oracle PL/SQL游标属性如同车辆的导航仪和仪表盘,提供丰富信息和控制。 `%FOUND`和`%NOTFOUND`指示数据读取状态,`%ROWCOUNT`记录处理行数,`%ISOPEN`显示游标状态。还有`%BULK_ROWCOUNT`和`%BULK_EXCEPTIONS`增强处理灵活性。通过实例展示了如何在数据处理中利用这些属性监控和控制流程,提高效率和准确性。掌握游标属性是提升数据处理能力的关键。
|
5天前
|
SQL Oracle 安全
Oracle的PL/SQL循环语句:数据的“旋转木马”与“无限之旅”
【4月更文挑战第19天】Oracle PL/SQL中的循环语句(LOOP、EXIT WHEN、FOR、WHILE)是处理数据的关键工具,用于批量操作、报表生成和复杂业务逻辑。LOOP提供无限循环,可通过EXIT WHEN设定退出条件;FOR循环适用于固定次数迭代,WHILE循环基于条件判断执行。有效使用循环能提高效率,但需注意避免无限循环和优化大数据处理性能。掌握循环语句,将使数据处理更加高效和便捷。
|
5天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL条件控制:数据的“红绿灯”与“分岔路”
【4月更文挑战第19天】在Oracle PL/SQL中,IF语句与CASE语句扮演着数据流程控制的关键角色。IF语句如红绿灯,依据条件决定程序执行路径;ELSE和ELSIF提供多分支逻辑。CASE语句则是分岔路,按表达式值选择执行路径。这些条件控制语句在数据验证、错误处理和业务逻辑中不可或缺,通过巧妙运用能实现高效程序逻辑,保障数据正确流转,支持企业业务发展。理解并熟练掌握这些语句的使用是成为合格数据管理员的重要一环。
|
7月前
|
SQL
Sql去重查询数据
Sql去重查询数据
61 0
|
2月前
|
SQL 关系型数据库 MySQL
mysql 中sql 语句查询今天、昨天、近7天、近30天、一个月内、上一月数据
mysql 中sql 语句查询今天、昨天、近7天、近30天、一个月内、上一月数据

推荐镜像

更多