2012-12-18 118 views
1

我想將Oracle數據庫表中列的內容複製到SQL Server數據庫中的另一列。我有超過300萬行轉移。解決這類問題有什麼簡單的方法嗎?並非Oracle表中的所有內容都將被傳輸,因爲Oracle表有大約400萬行從Oracle複製到SQL Server表中

+1

當你說「sql table」時,你的意思是SQL/Server嗎? –

+0

你有任何ETL工具嗎? – luchosrock

回答

1

那麼,假設您的意思是SQL/Server,那麼我將使用SQL Server Integration Services(SSIS),這將相當容易我最近做了這樣的事情。一個重要的提示是將數據放在一個沒有索引的表中,其中Oracle VARCHAR2列(如果有的話)映射到SQL/Server中的NVARCHAR,這樣可以避免SSIS中的數據轉換步驟。從暫存表中,您可以將它們放入正確的目標表中,然後擺脫暫存表。這是我做到的方式。

您可以將數據導入MS/Access數據庫並使用SQL/Server導入/導出嚮導。這很快,如果你有Ms/Access方便的話,或許你的最好的選擇。

您可以在SQL/Server中創建一個鏈接服務器,從中您可以簡單地將數據吮吸到數據庫中。這種方法我得到了不同的結果。它確實有效,但我發現它有時可能有點片面。這可能與我們的基礎架構有關,而不是Oracle Linked Servers固有的弱點。如果遇到問題,您可以將邏輯上的數據進行分區並將其分解爲SQL/Server。鏈接服務器是相當優雅的,但如果你能讓他們工作。您使用OPENQUERY()從Oracle檢索數據,例如

Select * Into SqlServerTableName 
    From OpenQuery(Oracle_Linked_Server,'Select * from OracleTable 
             Where etc'); 

您也可以將數據導出到平(或CSV)文件並導入,再次SSIS能做到這一點,但它不會那麼容易。這很容易格式化和導出/導入差異

0

澄清Ciarán的答案的最後一句。 我用來做什麼的這樣:從Oracle表用sqlplus和閥芯(sample

  • 出口數據;
  • 使用bcp實用程序快速加載到MS SQL中(documentation)。