2014-03-06 16 views
0

較長的SSIS任務的一部分是讀取10個Mio。將數據行放入表「trunk」中,並通過兩個不同的ID對其進行排序,以便加入另一列。如何在SSIS包中自動拆分表格

原來,排序10億。行對我們的服務器和adn來說太多了,因此我需要一個自動分割10 Mio的解決方案。表中的行「trunk」分成多個部分。

目前我通過執行包的SQL語句選擇TOP 5 Mio,然後選擇BOTTOM 5 Mio來手動完成此操作。

有沒有辦法做到這一點自動或完全不同?

+0

你在哪裏做你的排序。如果你正在使用SSIS排序任務選項,那麼這可能會導致內存壓力,因爲它是一個完整的內存操作,而是直接插入SQL並處理排序。 – MichaelAdrianJohnson

+0

相關表有多大?你可以考慮查詢而不是加入。 – Jayvee

+0

相關表格包含大約10 k行並且正在增長。我如何在SSIS中查找?我以爲「查找」,因爲在Excel中的VLOOKUP與SSIS中的JOIN相同。 SQL – coala

回答

0

從源讀取數據到目標表(中繼)時,可以分割它。 源行和目的地之間的行計數器。如果行計數> 5 M,則轉向數據流到下一個表。您甚至可以動態創建表格。

+0

好主意,但我該如何做到這一點:「如果行數大於5 M,則轉向數據流到下一個表,甚至可以動態創建表。」目前,我必須完成相同的數據流任務,唯一的區別是在SQL語句中從中繼檢索數據。首先它是1到5 M的行,另一個是ROW 5 M + 1到10 M. – coala

+0

這是行不通的。行計數器只在最後一行通過後更新變量。 – Jayvee

+0

爲什麼不做這項工作?我測試了它,並得到了有意義的結果。我怎麼會注意到有什麼缺失?你的意思是我不能通過行計數器精確地引用單個行嗎?假設我有10行。首先,我通過SELECT * FROM WHERE row_counter = 1來導入前5行,然後是5到10,然後是6到10.接下來的5行可能不是通過這種方式導入的,例如,儘管總數仍然是10,但我有重複的內容? – coala