我使用SSIS生成和转换新数据,以便以后在新系统中使用。每次运行我的SSIS包时都会出现问题,它会不断地将新记录插入到我的目标表中。
如何先清空目标表(/ OLE DB目标),然后插入新生成的记录?
目前,此问题的解决方法是在运行我的包之前执行delete from DestTable
。
答案 0 :(得分:38)
将删除语句放在Execute SQL Task
中。然后将它作为流程的第一个组成部分。该组件看起来像这样:
答案 1 :(得分:29)
创建执行SQL任务。让它先运行。对于sqlstatment来。
Truncate table DestTable
使用truncate table比使用delete更好,因为它忽略了所有索引,只删除了所有内容。
获取一些背景信息。我将尝试解释为什么你应该使用truncate table而不是delete table。删除表是基于行的操作,这意味着每行都被删除。截断表是一个数据页操作,整个数据页被分离。如果你有一个包含一百万行的表,那么截断表会快得多,那就是使用删除表的语句。
答案 2 :(得分:6)
关于使用Truncate表的一个警告,由于所述原因它确实运行得更好。但是,它还需要您的SSIS系统帐户的其他权限。 您应该确保在制作中可以使用这些,否则您将必须使用删除。
答案 3 :(得分:0)
你需要使用这个
truncate table table_name
这会清空表格