天天看點

Sql Server資料移到Oracle

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

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

exec sp_executesql @dt

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

圖(一)

怎麼可以讓SQL Developer可以通路其它資料庫?

答案是:添加JDBC 驅動,使其可以通路諸如MS SQL、My Sql、Sybase等資料庫.

添加三方資料庫支援的方法

點選sql developer的菜單的 選項→ 工具(Tools)→ 首選項(Prefences).見圖(二)。

Sql Server資料移到Oracle

圖(二)

點選彈出對話框中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 這裡需要先下載下傳驅動程式

操作見圖(三)

Sql Server資料移到Oracle

圖(三)

2 解壓剛剛下載下傳的jtds-1.2.2-dist,确認該檔案夾下有名稱為jtds-1.2.2.jar的檔案。

3 這個jtds-1.2.2.jar就是上面提到的 添加項目 對應的檔案。

4 添加過程見圖(四)

Sql Server資料移到Oracle

圖(四)

小注:

Append: 如果出現如下的錯誤(即是SQL SERVER的window驗證方式不可用的問題):

可以按照而下方法解決.

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驅動 下載下傳連結如下:

<a href="http://dev.mysql.com/downloads/connector/j/5.0.html" target="_blank">http://dev.mysql.com/downloads/connector/j/5.0.html</a>

mysql-connector-java-5.0.4.tar.gz(或.zip)壓縮包内含有個mysql-connector-java-5.0.4-bin.jar的檔案.

Sybase的JDBC驅動 下載下傳連結如下:

<a href="http://www.sybase.com/detail?id=1009805" target="_blank">http://www.sybase.com/detail?id=1009805</a>

或則點選Sybase中國官網的連結,如下:

<a href="http://www.sybase.com.cn/gvswse/site/china/downloads/evaluation.jsp" target="_blank">http://www.sybase.com.cn/gvswse/site/china/downloads/evaluation.jsp</a>

對應的下列條款

<a href="http://www.sybase.com/detail?id=1009805" target="_blank">jConnect 4.5 and 5.5 for JDBC</a>

<a href="http://www.sybase.com/detail?id=1009805" target="_blank"></a>

真正的開始

以上隻是配置Oracle Sql Developer可以連接配接Sql server(MS SQL),這是前提.之下的才是移植的步驟

Step 1 :creat a sql server connect

方法同建立Oracle的連接配接類似,這裡不再贅述。截圖見圖(五):

Sql Server資料移到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

③再小注 預設如果不Retrieve database,則連接配接的是Master資料庫

Step 2 Create user with system permission

建立個Oracle的system帳号(或則具有類似sys權限的使用者)連接配接

建立此連接配接的用途:

Ⅰ執行建立下面要用到使用者的migration的SQL語句。

Ⅱ 執行移植過程中産生的DDL語句

Ⅲ 以及驗證整個過程是不是成功,見圖(六)

Sql Server資料移到Oracle

圖(六)

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

圖(七)

Step 5 Capture Microsoft Sql Server

這時你右擊之前建立的sql server的連接配接(我的例子名稱是liang_server)→選擇Capture Microsoft Sql Server

這時你再看左邊欄下的Captured models,将多了個下圖樣的節點

Sql Server資料移到Oracle

圖(八)

Step 6 Convert to Oracle model

右擊Step 5剛剛建立的Capture models→選擇Convert to Oracle model,這時左邊欄的Converted models将多個節點。見下圖(九)

Sql Server資料移到Oracle

圖(九)

<a href="http://img.blog.163.com/photo/UOBH9rt5cdKzmIKYt0CvXQ==/2887933261052440329.jpg" target="_blank"></a>

Step 7 Generate Sqls

右擊Step 6下的Converted model→點選Generate(生成Oracle能識别的SQL文法)→執行該DDL語句

(在之前建立的System帳号的連接配接下做,或則有類似sys system權限的帳号連接配接),見圖(十)

Sql Server資料移到Oracle

圖(十)

小注:這裡将生成一個和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

圖(十一)

↓ ↓ ↓

<a href="http://img.bimg.126.net/photo/sCy6Y_0zrOmiCAWEiHVDcw==/5665246856255708960.jpg" target="_blank"></a>

<a href="http://img.bimg.126.net/photo/BxxLJsCP1jB0NM2gFNGDIQ==/1420885682436495902.jpg" target="_blank"></a>

圖(十二)

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 ,如需轉載請自行聯系原作者

上一篇: RAC實施流程
下一篇: nodeJS之URL