Ssis空excel列导致错误

时间:2017-02-02 13:09:37

标签: ssis mapping

使用Microsoft Visual Studio社区2015。 项目目标   -create" * \ temp \ email"目录   -start程序将所有包含xls附件的电子邮件提取到先前创建的文件夹中    - 使用每个循环循环遍历文件夹中的每个文件,处理并转移到sql表。 我遇到的问题是由空白的Excel文档(偶尔从远程位置发送)或某些原始xls报告仅包含5列而不是我现在已映射的6列引起的。有没有办法将包含正确列的文件与不匹配的列分开?  **只要这两个问题不存在,我就可以运行ssis包,一切都没有问题。

控制流程; 文件系统任务(创建目录--->执行流程任务(xls提取) - > ForEach循环(数据流任务" email2Sql")

数据流; Excel Source(使用表达式ExcelFilePath,@ user:filepath)延迟验证== true (列最初设置为f1-f6并映射到例如a,a,b,c,d,e,f。混合的旧文件仅包括a,b,c,d,e。)这是我想在哪里能够分离xls文件 条件转换拆分(列名不在第1行,这有助于删除" null"值) Ole Db目的地(sql表)

对于阅读量而言很抱歉,但是对于第一篇文章,我试图包含我认为可能相关的任何内容。

1 个答案:

答案 0 :(得分:0)

有一些工具可以让你打开excel doc并阅读它。但是,我认为最简单的方法是使用开箱即用的SSIS:

1 - 在读取文件的数据流之后添加文件系统任务。

2 - 从数据流到文件系统任务“失败”进行优先约束。这将导致仅在数据流任务失败时触发。

3 - 设置文件任务以将“坏”文件移动到另一个文件夹

这将允许您遍历所有文件并移动失败的文件。最终,包裹将以失败告终。如果您不想要这种行为,可以将ForceExecutionResult属性更改为成功。但是,知道某些文件存在问题以便解决问题可能会很好。