2016-04-28 65 views
0

我必須使用SSIS從SQL Server 2008 R2向Oracle Exadata加載大型表(超過> 2 TB)。是否可以按特定順序(基於1列或2列)加載?按特定順序加載表

+2

可以控制記錄在兩個dbs之間傳遞的順序,但這可能不是Oracle選擇存儲記錄的順序。您想實現什麼目標? –

+0

如果您按特定順序(大多數情況下 - 主/外鍵)加載數據,由於存儲索引,Exadata會更好(更快)。 – PNPTestovir

+1

在您的數據流中,您可以使用SQL命令以所需順序返回源數據。使用* OLE DB *或* ADO NET *源查找*數據訪問模式*下拉菜單。 –

回答

3

如果按順序加載是一項要求,那麼一定要將ORDER BY放入數據源(如果您的源代碼是SQL2008R2)的查詢中(可能是OLEDB源代碼)。這可以讓數據庫引擎完成這項工作。

SSIS排序數據轉換是一個性能瓶頸,它試圖在內存中運行,並且必須在輸出任何行之前加載整個數據集。隨着您所談論的數據量的增加,性能將會非常糟糕。

+0

我沒有足夠的RAM來做它(它超過了10億條記錄)。我可以利用聚集索引嗎? – PNPTestovir

+1

如果ORDER BY在查詢中,那麼* server * RAM/tempdb空間將成爲限制因素。服務器是否真的用完了RAM?如果你沒有在你的SSIS包中進行排序,並且內存不足,那麼在你的包的其他地方可能會有一個完全阻塞的組件,迫使你的客戶機(dev)機器加載整個數據集。請參閱http://sqlblog.com/blogs/jorg_klein/archive/2008/02/12/ssis-lookup-transformation-is-case-sensitive.aspx – SebTHU

+1

它將在本地PC上使用BIDS(et。我會猜測? – BIDeveloper