粗糙的右平面文件选项对于以CRLF终止的单个尾随字段非常有用,但是当任意数量的空白尾随字段被抑制并且该行早于CRLF终止时,我在SSIS中找不到替代方案,而是使用单个“REMAINDER”列读取几列,然后使用带有SUBSTRING操作的派生列转换逐个提取“可选”列。
我遇到的一种可能性是,在连接管理器获取它之前,是否有任何方法可以通过SSIS中的“padder”组件传递该行。然后,您可以获得使用连接管理器设置传入列长度的所有好处。我总是可以创建一个外部程序(或一个完全独立的SSIS数据流)来传递一个文件,通过该文件用空格填充每一行(并且右边是粗糙的 - 只需添加相同的最小空格数来考虑所有被抑制的字段到每一行line就足够了),但这似乎相当浪费磁盘空间,并且还需要再次完全读取(和写入)文件。
或者,也许存在第三方数据源组件,如果该行过早终止,它将自动为NULL或空白和列。
还有其他选择吗?
答案 0 :(得分:2)
我认为你提出的解决方案听起来很合理。磁盘空间很便宜。在导入数据之前,有一个两步过程可以清理格式,这是完全可以接受的。
答案 1 :(得分:1)
使用脚本组件将列分隔为数据源。