这是我的问题
我使用2源
first query (select * from servera.databasea.tablea)
secund query(select id, modifiedon from serverb.databaseb.tableb)
sort first query, sort second query
merge join at left join
condition split is.. isnull(idtableb) then i do insert (insert ont serverb)
!isnull(idtableb) && modifiedontableb<modifiedontablea then update(on server b)
它可以处理几行,但我处理的是50000多行,排序需要2个多小时,它会出现错误
我的另一种方法是做
右键单击show advanceditor和ole db源输出上的输入和输出属性我选择的已排序更改为真正的
在id的输出列上,我更改为排序键位置为1(我没有做任何修改)所以我为2 oledbsource做了这些步骤(服务器1和服务器2的oledb)
它的工作速度要快得多——它在5分钟内完成,并且(总是)插入条件分割现在不起作用:s因为总是要插入所以i在条件split上添加了parse(DT_DBDATE),并且它继续相等(仅插入)在我完成mofidiedon解析(DT_DATE)后永远不会更新,并且它仍然相等。那么我的问题是(我不想使用排序)我如何才能进行条件拆分工作?
排序步骤需要很长时间,因为您的排序操作内存不足。这意味着它将开始在磁盘上排序,而且速度非常慢。可以选择使用一些第三方排序组件,如NSort。
否则,您可以执行以下操作:
为了使MERGE工作,您的输入需要在查询中和使用SortKeyPosition进行排序。此外,它们也需要进行相同的排序。
您的查询应为:
SELECT * FROM servera.databasea.tablea ORDER BY id, modifiedon
SELECT id, modifiedon FROM serverb.databaseb.tableb ORDER BY id, modifiedon
现在将IsSorted设置为TRUE,将SortKeyPosition 1设置为id
在合并步骤中,使用id作为联接密钥。
现在,在条件拆分中,您可以使用两个输出案例。
请注意,如果每个id有多行,则需要更多的内容进行排序/连接,这样就不会出现顺序错误的情况。