我很难找到一种内置的方法来将空行重定向为SSIS中的平面文件源读取错误(无需借助自定义脚本任务) .
例如,您可以在其中间有一个空行的源文件:
DATE,CURRENCY_NAME
2017-13-04,"US Dollar"
2017-11-04,"Pound Sterling"
2017-11-04,"Aus Dollar"
并且您的列类型定义为:
-
DATE:数据库时间[DT_DBTIME]
-
CURRENCY_NAME:字符串[DT_STR]
尽管如此,程序包仍然会运行并将空行一直带到目标所在的位置,自然会失败 . 我能够及早发现并识别出源读取失败 . 是否可能没有脚本任务?也许是一个简单的派生列,但我更愿意,如果可以在Connection Manager / Flat File Source级别配置它 .
2 回答
不依赖脚本任务的唯一方法是使用一个
varchar(max)
列定义源平面文件,选择一个从未使用过的分隔符,并将所有内容写入SQL Server登台表 . 然后,您可以清除这些空行,并使用SQL将其余部分解析为关系输出 .这种方法不是很干净,并且比使用脚本任务转储空行或不匹配模式的方法需要更多的努力 . It isn't that hard to create a transformation with the script component
话虽这么说,我的建议是记录一个清晰的界面描述,并使用您的界面将其分发给所有客户 . 处理读取平面文件时抛出错误的所有文件,并将带有该文件的邮件发送给负责的客户端,并提供不符合接口规则且需要修复的信息 .
想象一下平面文件是手动生成的,甚至更糟糕的是使用像excel这样的东西,你会遇到错误的文件编码,缺少列,非ascii字符,错误的日期格式等等 . 你将处理由质量问题引起的所有异常 .
只需添加条件拆分组件,然后使用以下表达式拆分行
并将默认输出连接器连接到目标
References