2011-07-27 50 views
0

我確信這可能非常簡單,但我不確定如何最好地去解決它。使用嚮導在SQL Server 2008中導入跨表多步驟數據

我需要做一個相當大的(10,000,000行)常規導入/導出作業運行查詢而不是直接的表到表映射。麻煩的是,這個過程有三個不同的步驟,第二個和第三個步驟依賴於第一個步驟中選擇的數據併發生在不同的服務器上。

讓我分解它。

步驟1是從服務器1上的「Customer_Evidence」表中選擇這些千萬行,並將它們傳輸到服務器2上的「Evidence」表中。這是通過特定查詢完成的,因爲兩個表具有不同的列,數據類型。

第2步是從服務器1上的「Customer_Item」表中選擇符合特定條件的所有數據,並將它們傳送到服務器2上的「Item」表中。但是,我只需要選擇與鍵匹配的數據基於步驟1中傳輸的數據。這是問題的根源 - 我選擇的步驟2取決於加入不同服務器上的表。

步驟3與步驟2基本相同,只是使用不同的選擇標準。我仍然需要只抓取具有與步驟1中導入的密鑰相匹配的密鑰的行。

由於服務器之間的關係不固定,這個問題變得更加複雜。有一天,我可能會在服務器1和服務器2之間進行傳輸,而在服務器1和服務器3之間進行傳輸。這些服務器通常位於不同的域中。因此,每次設置鏈接的服務器都不是一個簡單或實際的選擇。

現在我很清楚,簡單的解決方案是,作爲步驟2的一部分,將步驟1中使用的查詢重新運行到臨時表中並反向加入。但是對於一千萬行將會非常昂貴的行,我會想。或者我錯了?

還是有更好的解決方案嗎?

回答

0

對於大表上的連接條件(步驟1),你需要所有的列還是隻需要鍵?如果你只是需要密鑰,那麼在連接查詢中只創建一個只包含密鑰和一個EXISTS子句的臨時表,我認爲並不昂貴。

+0

只要鑰匙就夠了。但是如何在導入/導出嚮導中管理跨兩個數據庫的連接?很明顯,它一次只能做一個數據庫。目前我正在將此作爲一個兩步手動過程來完成,但這並不理想。 –

+0

你在使用SSIS或其他東西嗎?我的意思是我不明白有關導入/導出嚮導的問題。如果您使用的是SSIS,那麼在第二個數據流的源代碼中,您可以執行一個查詢,該查詢將臨時表與ID和Customer_Item表(使用EXISTS或IN或甚至INNER JOIN)進行連接。 – alas

相關問題