Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我想比较SSIS中两个不同Excel文件的行数以获取电子邮件警报_Excel_Ssis_Count_Comparison_Row - Fatal编程技术网

我想比较SSIS中两个不同Excel文件的行数以获取电子邮件警报

我想比较SSIS中两个不同Excel文件的行数以获取电子邮件警报,excel,ssis,count,comparison,row,Excel,Ssis,Count,Comparison,Row,我正在寻找一种方法来比较SSIS中两个Excel文件的行数,如果其中一个文件的行数大于等于第二个文件的行数,我希望收到一封电子邮件通知我这一点。这是我在Visual Studio中可以做的事情吗?如果是,如何做?第一个解决方案是:读取excel文件并加载到数据表,然后运行查询以比较两个数据表,然后发送电子邮件。 第二种解决方案是:当您通过查询读取文件时,在绑定中选择value1和value2中的行数,然后进行比较 我会这样组织它 我定义了4个SSIS变量。其中两个将用于数据流中,以捕获从源生成的

我正在寻找一种方法来比较SSIS中两个Excel文件的行数,如果其中一个文件的行数大于等于第二个文件的行数,我希望收到一封电子邮件通知我这一点。这是我在Visual Studio中可以做的事情吗?如果是,如何做?

第一个解决方案是:读取excel文件并加载到数据表,然后运行查询以比较两个数据表,然后发送电子邮件。
第二种解决方案是:当您通过查询读取文件时,在绑定中选择value1和value2中的行数,然后进行比较

我会这样组织它

我定义了4个SSIS变量。其中两个将用于数据流中,以捕获从源生成的行的数量

另外两个应用了表达式来计算值

@[User::RowCountFile1] >  @[User::RowCountFile2]
这将生成一个真/假值,我将在发送电子邮件时使用该值来确定是否有任何工作电子邮件要完成

因为我很懒,所以我还使用了一个表达式来生成电子邮件的正文

"The value of  File1 is " +  (DT_WSTR,20) @[User::RowCountFile1] + " and File2 is " +  (DT_WSTR,20) @[User::RowCountFile2]
两个数据流任务都是这样的


最后的配置是向发送电子邮件任务添加一个表达式,并将Disable属性更改为由我们的@[User::IsFile1BiggerThan2]变量驱动。

是的,这是可以在Visual Studio中执行的操作。你能详细说明一下你到目前为止都在做些什么吗?使用Excel.Interop相当简单。考虑阅读,并尝试提供一个显示你遇到任何麻烦的地方。如果我想拥有相同的包,将文件1与同一目录中的多个文件进行比较,我会怎么做呢?基本上,在检查了文件1和文件2、文件1和文件3、文件1和文件4等之后,要给出权威的答案就要看太多了,但是如果我必须比较一个文件和多个文件的行数,我可能会对所有文件进行foreach循环枚举。对于找到的每个文件,计算行数。然后我将有一个执行SQL任务将计数存储到一个表中。一旦所有的文件都清点过了,我就会查看结果,并酌情发送电子邮件。另一种延迟/复制粘贴方法是重复我们在求解File2时所做的工作,并为File3、File4等生成变量,并遵循模式。我遵循了上述步骤,但当我在使行大小不同的文件1与文件2不同后测试程序时,布尔值仍然返回false。您有任何疑难解答提示吗?在电子邮件发送任务上设置断点,然后检查RowCount变量的值。它们和你期望看到的相符吗?我曾经有过这样的例子,Excel只有50条记录,但Excel源会给我发送几百条记录——就像前几行的碎屑没有完全清理一样。数据都是空白的,但行被发送了。RowCount变量的值似乎每次都是0。