使用脚本任务,利用表名和日期的变量从表中删除记录。

问题描述 投票:0回答:1

我有一个数据流,它从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.我可以理解脚本,可以适应它们,但编写是另一回事......请帮助我?

ssis azure-sql-database azure-data-factory azure-data-factory-2
1个回答
0
投票

谢谢 billinkc 的评论。我会把它作为答案贴出来,以帮助其他有同样问题的人。

在你的源查询中的每一条记录都会发射相同的删除语句,这是你对第一条记录的要求,但是对于第7000万条记录来说,会很麻烦。

希望能帮到你。

© www.soinside.com 2019 - 2024. All rights reserved.