sql - 如何防止 SSIS 从数据库中已存在的文件中导入数据?

标签 sql ssis

每天我都会将一些 csv 数据加载到我的表中。我的表有日期列,现在我需要使用回滚函数,这样,如果数据已经存在于我的表中,它必须回滚,否则它必须根据我的 Asofdate 参数插入。

我知道这有点令人困惑,让我更清楚一点。

我的表有eid,ename,asofdate列,现在我每天插入新文件时,它必须根据asofdate查看该文件是否已经存在于该表中,如果数据存在,它应该回滚数据。

最佳答案

正如@Diego 所提到的,您将在数据流任务中使用查找转换 来实现该功能。

您的数据流任务看起来像这样。在这里,平面文件源读取 CSV 文件,然后将数据传递给查找转换。此转换将检查目标表中的现有数据(假设表名称是 dbo.Destination)。查找转换的配置显示在下一个屏幕截图中。如果没有匹配的记录,那么来自 CSV 文件的数据将被发送到 OLE DB 目标,否则数据将被丢弃。

Data flow task

查找转换 中,您将在“连接”选项卡上选择目标数据库表。在“列”部分,您将验证要检查现有数据的所有列。在这种情况下,来自 CSV 文件的列 eidnameasofdate 根据数据库表 dbo 中的同名列进行验证。目的地。如果这三列的传入值与表中的任何行匹配,则数据将不会继续向下发送。

希望这能给你一个想法。

Lookup table configuration

Lookup check

关于sql - 如何防止 SSIS 从数据库中已存在的文件中导入数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10313612/

相关文章:

sql - 将 SSIS 包配置应用于多个包

sql-server - SSIS 脚本任务丢失代码

mysql infile无法访问子查询中的@user变量

sql - 在 MySQL 中创建分类表

mysql - 按优先级 NULL 分组?

sql-server - SSIS条件分割多个真实路径

sql-server - SSIS - 创建自定义连接管理器

MySQL 查询并比较两个不同的表

mysql 选择每个项目的最大日期

ssis - 在 Foreach 循环中增加一个变量并使用它-SSIS