SQL SERVER導入數據到ORACLE的方法總結


我們偶爾會有將數據從SQL SERVER導入到ORACLE當中的這種需求,那么這種跨數據庫導數有那些方法呢?這些方法又有那些利弊呢? 下面比較膚淺的總結了一些可行的方法。

1:生成SQL腳本然后去ORACLE數據庫執行。

CREATE TABLE TEST
(
 
    ID   INT ,
 
    NAME VARCHAR(12)
 
)
 
INSERT INTO dbo.TEST
 
SELECT 1001, 'Kerry' UNION ALL
 
SELECT 1002, 'Jimmy' UNION ALL
 
SELECT 1003, 'Ken'   UNION ALL
 
SELECT 1004, 'Richard'
 
SELECT 'INSERT INTO TEST '
 
      +'SELECT ' + CAST(ID AS VARCHAR(12)) +' AS ID,'''
 
      + NAME + ''' FROM DUAL;'
 
FROM dbo.TEST

 

優點:我還真找不出其優點,僅僅作為一種方法歸納在此。

缺點:操作麻煩,每次操作都要寫腳本;數據量大時性能非常糟糕。

適用場景:僅僅使用小表、基礎數據表。例如省份表之類。它能做到的,SQL SERVER導入導出工具能比其跟方便、快捷的做到。

 

2:創建鏈接服務器鏈接到ORACLE數據庫

 

   創建鏈接到ORACLE數據庫的鏈接服務器非常簡單,在此不做過多描述。一般使用這種方式做數據交互的情況較多。

 

優點:鏈接服務器創建好后,可以非常方便的使用SQL導入數據到ORACLE。而且可以反復使用。

缺點:需要安裝ORACLE CLIENT客戶端,而且ORACLE CLIENT客戶端工具安裝后必須重啟服務器使之生效。效率不是最快的。尤其當導入的數據量非常大時,不推薦使用這種方法。

適用場景:適用於系統經常需要在SQL SERVER與ORACLE之間數據交互的場景,這樣就可以方便的利用它來導數,而不用為了導數在服務器上裝ORACLE CLIENT客戶端工具。尤其適合經常需要數據交互的場景。

 

3:使用SQL SERVER的導入導出工具

SQL Server的導入導出工具(SQL Server Import and Export Data),可以在很多不同數據庫之間進行導數。

 

優點:圖形化操作、快捷方便。不需要寫代碼(或只需要寫很少代碼)。

缺點:1:效率不高問題,有一次導入70多萬數據,耗時非常久。速度非常慢。當然我沒有大量測試驗證。不知道不同的數據庫連接驅動Microsoft OLE DB Provider for Oracle 、Oracle Provide for OLE DB、.Net Framework Data Provider for Oracle之間的效率是否有較大區別。

clipboard

     2:出錯時提示信息有時候不明確(出錯信息不具體),用戶體驗非常糟糕。

適用場景:適用於絕大多數數據量不大的場景。尤其適合一次性導數。

 

4:借助BCP和SQL*LOADER導入數據

通過BCP工具將SQL SERVER中的數據導出為平面文件(Text或CSV格式),然后借助ORACLE的SQL LOADER工具將數據導入數據庫。

優點: 效率高、速度快,尤其導數的數據量非常大的情況下。SQL*LOADER的直接路徑裝載效率非常高:(direct path):采用這種模式,SQLLDR不使用SQL;而是直接格式化數據庫塊。

缺點: 

    1:需要寫一些腳本。如果有非常多的表需要導數,工作量較大

    2:平面文件的格式會導致SQL LOADER裝載數據出現較多小問題。如果你精通SQL*LOADER的話,那么就可以避免踩到那些坑。

適用場景:大數據的導入導出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM