我有一个数据流,它从API中读取记录.然后将这些记录插入SQL Azure数据库中的一个表中.问题是,源数据没有主键。源数据确实有相同的记录,这些记录都是有效的。 我不想插入双重记录。我不想每次填充该表时都做一次完整的加载。 所以,我的想法是从源数据中获取最后一天的数据,在目标表中删除最后一天的数据,然后从源数据中插入数据.由于源数据相当慢,如果我在开始数据流之前删除数据,我的客户将有几分钟的不完整数据,直到20分钟.我希望删除和写入数据之间的时间尽可能短。 在数据流中,从源表读取后,在写入目的表之前。
脚本任务将根据两个变量从目的表中删除记录:1为日期选择要删除的记录,1为决定是什么schema.table。
这都是由变量控制的。user::delete_date
是一个日期时间user::schema_table
是要删除记录的表的schema_name。表名总是相同的,但模式不同。meta_inserted_date
是目标表中的一个字段,类型为datetime2。
所以,我希望脚本任务执行的指令是。
DELETE FROM user::schema_table WHERE meta_inserted_date >= user::delete_date
因为我想在数据流中完成这个任务,所以我不能使用Execute SQL Task.我看到的在数据流中执行SQL的唯一方法是使用Script task.我可以理解脚本,可以适应它们,但编写是另一回事......请帮助我?
谢谢 billinkc 的评论。我会把它作为答案贴出来,以帮助其他有同样问题的人。
在你的源查询中的每一条记录都会发射相同的删除语句,这是你对第一条记录的要求,但是对于第7000万条记录来说,会很麻烦。
希望能帮到你。