根据SSIS中的数据内容识别重复文件
Identifying duplicate files based on data content in SSIS
我将文件保存到共享位置。每个文件都有不同的元即。文件名,创建日期。
当且仅当文件内容与之前处理的文件不同时,我才必须使用 SSIS 提取数据。
这应该相当简单 -
- 使用配置为
For Each File
设置的 ForEach
容器。 Folder name
将是共享位置。 File Name
应该是通配符(例如,*.csv)
- 在 SQL 中创建一个名为
LoadedFiles
的 table,它将保存加载文件的名称。请注意,当您创建 ForEach
容器时,您还会创建一个保存文件名的变量。现在在 ForEach
容器中,检查此变量中的值是否已存在于 LoadedFiles
table 中。如果没有,只有加载。
我假设所有文件都具有相同的元数据(列名和数据类型)。即使他们不这样做,您也可以采用相同的逻辑。
此外,如果不是很明显,为了使它起作用,您需要在每次决定加载文件时在 LoadedFiles
table 中插入一个新行。
编辑:似乎相同的文件名并不等同于 OP 的相同内容。在那种情况下,他应该在 SQL table 上做一个 MERGE
而不是盲插入。
MERGE
在主键上 IF MATCHED
什么都不做 INSERT
我有解决办法
SSIS 执行进程任务,我调用了 FC.exe
http://www.howtogeek.com/206123/how-to-use-fc-file-compare-from-the-windows-command-prompt/
我将文件保存到共享位置。每个文件都有不同的元即。文件名,创建日期。
当且仅当文件内容与之前处理的文件不同时,我才必须使用 SSIS 提取数据。
这应该相当简单 -
- 使用配置为
For Each File
设置的ForEach
容器。Folder name
将是共享位置。File Name
应该是通配符(例如,*.csv) - 在 SQL 中创建一个名为
LoadedFiles
的 table,它将保存加载文件的名称。请注意,当您创建ForEach
容器时,您还会创建一个保存文件名的变量。现在在ForEach
容器中,检查此变量中的值是否已存在于LoadedFiles
table 中。如果没有,只有加载。
我假设所有文件都具有相同的元数据(列名和数据类型)。即使他们不这样做,您也可以采用相同的逻辑。
此外,如果不是很明显,为了使它起作用,您需要在每次决定加载文件时在 LoadedFiles
table 中插入一个新行。
编辑:似乎相同的文件名并不等同于 OP 的相同内容。在那种情况下,他应该在 SQL table 上做一个 MERGE
而不是盲插入。
MERGE
在主键上 IF MATCHED
什么都不做 INSERT
我有解决办法
SSIS 执行进程任务,我调用了 FC.exe
http://www.howtogeek.com/206123/how-to-use-fc-file-compare-from-the-windows-command-prompt/