2012-06-08 62 views
6

我想寫一個SSIS包來將數據從oracle複製到MS Sql服務器。並且條件是,通過在SQL中選擇一個表,將知道哪些數據必須從oracle遷移到SQL。基本上Table1.Column1在SQL服務器必須從oracle填充如果該值不存在於SQL Server中的表中。我們在該表中也有共同的列值來將記錄與sql server和oracle進行映射。所以要做到這一點我已經計劃在SSIS包中做到這一點。創建一個SSIS包 - 將數據從Oracle複製到SQL Server

任何人都可以詳細解釋我如何爲上述場景創建一個SSIS包。

非常感謝您的幫助。

+0

您正在使用哪個版本的ssis? – praveen

回答

10

您應該使用Lookup來加入SQL服務器和Oracle的公共列(相同數據類型),並從SQL服務器中沒有匹配記錄的Oracle中檢索值。

設計 Design

1.使用SSIS 2005

  1. 將一個OLEDB源,並指向您的Oracle數據庫和選擇表。
  2. 拖動查找並選擇SQL Server連接並指向其表。
  3. 在列選項卡中,加入公共列並選擇需要檢索的右側列。 Lookup
  4. 單擊配置錯誤輸出並選擇加入列的重定向行。 Lookup
  5. 拖動Oledb命令並將其連接到查找的錯誤輸出。 6.Write在OLEDB命令insert語句 Oledb Oledb

2.如果您正在使用SSIS 2008則無需配置中查找錯誤輸出。只是從查詢拖動無匹配輸出到SQL Server目的地。

+0

你不需要一個OleDbcommnad,你可以使用一個oledbdestination。我認爲這是更容易和更快 – Diego

+0

是的,你是對的。沒有OledbCommand – praveen

+0

嗨Praveen,謝謝你非常愚蠢它工作正如我所料,它真的幫助了我。我面對的一個問題是,當我從SQL Server和Oracle中查找Column時,其中一列是不同的數據類型,所以它沒有列出名爲'ID'的列需要映射,但我們在SQL服務器中使用ID作爲int,Oracle中'ID'的映射列使用varchar。所以我怎麼能映射它。 –

3

我建議this執行。

我已經使用praveen的解決方案,但有時它可能不是最好的。特別是如果目標上的記錄增加,則爲數字。此外,它不涉及「更新」

+0

嗨, 感謝您的回答。我想知道以下是否可能,如果有的話請詳細解釋。謝謝。 在SQL中,我們有Table1,它有許多Oracle服務器連接細節。我們必須做的是,我們需要將數據從Oracle.Table5複製到SQl.Table5。條件是在SQL.Table5我知道工廠名稱和使用工廠名稱我可以在SQL.Table1中獲得Oracle服務器的詳細信息。所以使用這個細節我需要連接到oracle並獲取匹配的數據,然後在Sql.Table5中更新。 這可能在SSIS包中? –

+0

@Diego我通過Andy的博客。這是將數據加載到sql server的最佳實現。他額外的Split轉換與我發佈的解決方案有所不同。我可以使用登臺表來填充使用Oledb目標的更新數據然後在控制流中使用執行sql任務將其加載到目標表中。通過這種方式,我可以通過避免逐行更新(這是在Andy的博客中使用Oledb命令完成的)並通過執行批處理操作來實現更好的性能SQL任務 – praveen

相關問題