使用脚本任务使用 table 名称和日期的变量从 table 中删除记录

Use script task to delete records from table using variables for tablename and date

我有一个从 API 读取记录的数据流。 然后,它会将这些记录插入到 table 中的 SQL Azure 数据库中。 问题是源数据没有主键。源数据确实有完全相同的有效记录。我不想插入双记录。我不想每次填充 table 时都进行满载。因此,想法是从源中获取最后一天的数据,删除目标 table 中的最后一天数据,然后从源中插入数据。 由于源非常慢,如果我在开始数据流之前删除数据,我的客户将有几分钟的不完整数据,直到 20 分钟。 我希望删除和写入数据之间的时间尽可能短。 这就是为什么我正在考虑在数据流 中使用脚本任务 ,在从源读取之后和在目标 table 中写入之前 table。

脚本任务将基于两个变量从目标 table 中删除记录:1 用于 select 条记录的删除日期,1 用于决定删除什么 schema.table就是这样。

这都是由变量控制的。 user::delete_date 是日期时间 user::schema_table 是要从中删除记录的 table 的 schema_name。 table 名称始终相同,但架构不同。 meta_inserted_date 是目的地 table 中 datetime2

类型的字段

所以我希望脚本任务执行的指令是:

DELETE FROM user::schema_table WHERE meta_inserted_date >= user::delete_date 

由于我希望在数据流中完成此操作,因此我无法使用执行 SQL 任务。 我看到在数据流中执行 SQL 的唯一方法是使用脚本任务。 我可以理解脚本,可以改编它们,但写作是另一回事……请帮忙?

感谢 billinkc 的评论。我会post它作为答案来帮助其他有同样问题的人。

您的源查询中的每一行都将触发相同的删除语句,这正是您希望对第一行执行的操作,但对第 7000 万行来说会很麻烦。

希望对你有帮助。