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 (即是两种默认的数据库)
见图(一)
图(四)
********************************************************************************************************************************
小注:
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 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语句
Ⅲ 以及验证整个过程是不是成功,见图(六)
图(六)
Step 3 create migration user
方法:
在Step 2的连接状态下,执行以下Sql 代码
--Creating user migration
CREATE USER migration> DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT CONNECT, RESOURCE, CREATE VIEW, CREATE PUBLIC SYNONYM
TO migration WITH ADMIN OPTION;
GRANT>
ALTER ANY TABLE,> 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。见下图(七)
图(七)
Step 5 Capture Microsoft Sql Server
这时你右击之前建立的sql server的连接(我的例子名称是liang_server)→选择Capture Microsoft Sql Server
这时你再看左边栏下的Captured models,将多了个下图样的节点
图(八)
Step 6 Convert to Oracle model
右击Step 5刚刚建立的Capture models→选择Convert to Oracle model,这时左边栏的Converted models将多个节点。见下图(九)