SSIS将空行重定向为平面文件源读取错误

时间:2018-01-23 12:08:34

标签: sql-server ssis etl

我很难找到一种内置的方法来将空行重定向为SSIS中的平面文件源读取错误(无需借助自定义脚本任务)。

作为示例,您可以在其中间放置一个空行的源文件:

DATE,CURRENCY_NAME
2017-13-04,"US Dollar"
2017-11-04,"Pound Sterling"

2017-11-04,"Aus Dollar"

您的列类型定义为:

  1. 日期:数据库时间[DT_DBTIME]
  2. CURRENCY_NAME:字符串[DT_STR]
  3. 尽管如此,程序包仍然运行并将空行一直带到目标所在的位置,自然会失败。我能够及早发现并识别出源读取失败。是否可能没有脚本任务?也许是一个简单的派生列,但我更愿意,如果可以在Connection Manager / Flat File Source级别配置它。

2 个答案:

答案 0 :(得分:0)

不依赖脚本任务的唯一方法是仅使用一个varchar(max)列定义源平面文件,选择从未使用过的分隔符,并将所有内容写入SQL Server登台表。然后,您可以清除这些空行,并使用SQL将其余部分解析为关系输出。

这种方法不是很干净,并且比使用脚本任务转储空行或不匹配模式的方法需要更多的努力。 It isn't that hard to create a transformation with the script component

话虽如此,我的建议是记录清晰的界面描述并使用您的界面将其分发给所有客户。处理读取平面文件时抛出错误的所有文件,并将带有该文件的邮件发送给负责的客户端,并提供不遵守接口规则且需要修复的信息。

想象一下平面文件是手工生成的,更糟糕​​的是使用像excel这样的东西,你会遇到错误的文件编码,缺少列,非ascii字符,错误的日期格式等。 您将致力于处理由质量问题引起的所有异常。

答案 1 :(得分:0)

只需添加条件拆分组件,然后使用以下表达式拆分行

[DATE] == ""

将默认输出连接器连接到目标

<强>参考