我需要将一个巨大的表分成多个块。
从DB2获取数据并在SSIS中处理
迭代1:获取前10行并对其进行处理
迭代2:获取下10行(11-20)并进行处理
迭代3:获取下10行(21-30)并进行处理
依次类推,直到表的计数(*)
是否有可能从db2中获得前n至n行
正在寻找如下查询
从表名中选择*可获取10到20行
答案 0 :(得分:1)
db2 "select row_number() over(order by tabschema, tabname)
, tabschema::char(10), tabname::char(30)
from syscat.tables
order by tabschema, tabname
offset 10 rows
fetch first 10 rows only"
1 2 3
-------------------- ---------- ------------------------------
11 SYSCAT COLCHECKS
12 SYSCAT COLDIST
13 SYSCAT COLGROUPCOLS
14 SYSCAT COLGROUPDIST
15 SYSCAT COLGROUPDISTCOUNTS
16 SYSCAT COLGROUPS
17 SYSCAT COLIDENTATTRIBUTES
18 SYSCAT COLLATIONS
19 SYSCAT COLOPTIONS
20 SYSCAT COLUMNS
10 record(s) selected.
答案 1 :(得分:1)
要从SSIS中使用此方法,请执行以下步骤:
在OLEDB / ODBC Source中,将Access模式设置为SQL Command并定义类似于以下内容的名称:
"SELECT * FROM MYTABLE ORDER BY ID_COLUMN
OFFSET " + (DT_WSTR,50)@[User::IncrementValue] + "
FETCH FIRST " + (DT_WSTR,50)@[User::IncrementValue] + " ROWS ONLY"
以下答案是从SQLite逐块加载数据的分步指南,您可以遵循它,只需更改所提到的SQL Command语法即可: