我打算从过程中拆分行数,然后将它们加载到表中,并使用循环,它将继续将某些行加载到表中。
我不确定这样做的方式。
我的流程:表输入(调用过程-返回9亿条记录)->数据转换->插入/更新步骤(递增加载到目标表)。
现在,我必须根据过程中的某个字段从过程中检索几条记录(一次说一百万条),然后将它们加载到表中。必须对此进行迭代,直到过程的行结束为止。
请帮助我。
答案 0 :(得分:0)
除了处理这么多行所花费的时间外,我真的没有发现任何问题。 PDI(勺子/水壶)适用于 流 ,而不是像SQL中的“ 数据集 ”,行是收到后立即处理。因此,PDI可能永远不必一次处理所有9亿行,并且您不必等到SQL开始处理所有行之后就可以开始处理。
Table output
步骤的值为Commit size
,以控制通过一次 事务 将多少条记录发送到目标表。诀窍是平衡开始新连接所需的时间与在一个事务中处理大量行所需的时间。我的取值范围是200到5000,具体取决于我的需求和系统的功能,但您可能可以提高该值。
听起来您更大的问题将是从存储过程返回那么多行。使用SP代替SELECT
或VIEW
意味着您将必须找到降低内存压力的方法。
我有几百万个行表,我创建了TEMP
表(非表变量)以在处理时使用SP末尾的单个SELECT * FROM temp..table
存储数据。这样可以按预期从服务器流式传输数据,并使用最少的内存。