2010-06-28 87 views
2

我有一個Oracle源,我得到整個表,它被複制到一個看起來一樣的SQL Server 2008表。只是爲了測試,我只想得到表的一個子集。如何限制SSIS數據流任務中的行數?

在舊的DTS包中,在數據轉換的選項下,我可以設置第一個和最後一個記錄號,它只會獲得很多記錄。

如果我正在查詢,我可以將其更改爲選擇top 5000或在頂部設置rowcount 5000(也許這是一個Oracle源代碼)。但我抓住了整個桌子。

如何在選擇Oracle表時限制行數?

回答

0

我們可以在數據流中使用rowcount組件,並在組件創建User :: rowCount < = 500之後在優先約束條件中嵌入目標。每當計數大於500時,進程停止將數據插入到目標表中。

感謝

prav

+0

對不起,我想在控制流程中,但實際上在數據流中我們不能設置優先約束條件。我會回來抽樣測試。 謝謝 prav – prav 2010-06-28 23:54:58

+0

好的,想法 1.如果我們有數據中的源數據PK,我們可以使用分裂條件。 2.創建具有一個標識列和PK形式的派生表,然後使用查找方法獲取頂部X記錄。 3.將完整的源數據轉儲到具有相同源的模式的派生表中,然後選擇X個來源的記錄。 更多的想法請求讓我知道。 謝謝 prav – prav 2010-06-29 00:04:28

+0

這聽起來像很多工作,只是在測試過程中限制數量。當我沒有測試時,我會需要所有的數據,但現在不需要全部400萬條記錄(我也不想等待它)。 – thursdaysgeek 2010-06-30 20:54:15

0

這已經有一段時間,因爲我感動的PL/SQL,但我認爲,你可以簡單地把一個where條件 「的rownum < = N」 其中n =你想要的樣品的行數。 ROWNUM是每個Oracle表上存在的僞列。 。 。這對於像這樣的問題是一個方便的功能(它相當於t-sql的row_number()函數,沒有劃分和排序的能力(我認爲),這將使您無需將整個表格帶入內存:

select col1, col2 
from tableA 
where rownum <= 10; 

以供將來參考(並不僅是因爲我一直在使用它最近),DB2的等價物,這是在聲明的結尾條款「取前n只」:

select col1, col2 
from tableA 
fetch first 10 only; 

希望我」沒有太離譜的基地

+0

但是,我沒有做一個查詢,我只是抓住了表。如有必要,我可以將其更改爲查詢,但有20多個字段,我不想識別每個字段。 – thursdaysgeek 2010-06-29 17:00:25

相關問題