如何在SSIS中插入新记录之前清空目标表?

时间:2013-11-27 08:32:58

标签: sql-server database ssis relational-database

我使用SSIS生成和转换新数据,以便以后在新系统中使用。每次运行我的SSIS包时都会出现问题,它会不断地将新记录插入到我的目标表中。

如何先清空目标表(/ OLE DB目标),然后插入新生成的记录?

目前,此问题的解决方法是在运行我的包之前执行delete from DestTable

4 个答案:

答案 0 :(得分:38)

将删除语句放在Execute SQL Task中。然后将它作为流程的第一个组成部分。该组件看起来像这样:

enter image description here

答案 1 :(得分:29)

创建执行SQL任务。让它先运行。对于sqlstatment来。

Truncate table DestTable

使用truncate table比使用delete更好,因为它忽略了所有索引,只删除了所有内容。

获取一些背景信息。我将尝试解释为什么你应该使用truncate table而不是delete table。删除表是基于行的操作,这意味着每行都被删除。截断表是一个数据页操作,整个数据页被分离。如果你有一个包含一百万行的表,那么截断表会快得多,那就是使用删除表的语句。

答案 2 :(得分:6)

关于使用Truncate表的一个警告,由于所述原因它确实运行得更好。但是,它还需要您的SSIS系统帐户的其他权限。 您应该确保在制作中可以使用这些,否则您将必须使用删除。

MSDN Reference

答案 3 :(得分:0)

你需要使用这个

truncate table table_name

这会清空表格