如何定期更新SSIS中的数据库表。该表具有外键约束。 我每周都有一个包运行,我必须从平面文件更新表中的数据。大多数内容与更新值和其他新行相同。
UPDATE :我的数据文件包含更新的内容(缺少某些行,添加了一些行,修改了一些行)。数据文件没有主键(我在第一次批量插入数据文件时创建主键),在后续的SSIS包运行中,我需要使用新的数据文件内容更新表。
e.g。
table
---------------------------------------------
1 Mango $0.99
2 Apple $0.59
3 Orange $0.33
data file
---------------------------------------------
Mango 0.79
Kiwi 0.45
Banana 0.54
如何使用文件中的数据更新表格。该表与其他表具有外键约束。
答案 0 :(得分:1)
以下是一些想法/步骤:
尝试一下,让我知道结果/评论。
答案 1 :(得分:1)
另一种方法,即加载大量组数据而不是逐行处理:
在数据库
上创建一个过程(您可能需要更改对象名称,然后添加 事务控制和错误处理等只是一个草案):
create procedure spLoadData
如 开始
update DestinationTable
set DestinationTable.Price = StagingTable.Price
from DestinationTable
join StagingTable
on DestinationTable.Name = StagingTable.Name
insert into DestinationTable
(Name, Price)
select Name, Price
from StagingTable
where not exists (select 1
from DestinationTable
where DestinationTable.name = StagingTable.Name)
结束
关于SSIS
使用(truncate [staging_table_name])执行SQL任务
数据流任务从平面文件传输到临时表
执行SQL任务,调用您创建的过程(spLoadData)。