SSIS 包顽固的平面文件连接管理器
Posted
技术标签:
【中文标题】SSIS 包顽固的平面文件连接管理器【英文标题】:SSIS Package Stubborn Flat File Connection Manager 【发布时间】:2016-01-27 00:35:22 【问题描述】:我每周都会收到一个以竖线分隔的平面文件,该文件有 50 列。我正在尝试使用 SSIS 获取该文件,删除最后 3 列,然后将剩余数据插入到新的管道分隔平面文件中。起初我以为这会很简单,但我有一个顽固的平面文件连接管理器。它不断恢复到带有额外列的入站文件布局,并且当出站文件需要用管道分隔时,它还会继续返回到逗号分隔文件。
我“删除”不需要的列的方式是将它们从入站平面文件连接管理器中删除,因此它们不会列在平面文件源的输出列中,也不会显示给位于平面文件目标的输入列上。
这两个文件的文件名是动态的...不确定是否与它有关。
我将两者的延迟验证都设置为 true,但我不确定还可以尝试什么。我也尝试删除所有这些并重新添加到连接管理器和文件中。
有 2 个平面文件连接管理器,一个用于源,一个用于目标,是否存在一些问题?有没有我缺少的设置?
【问题讨论】:
据我所知,您无法更改平面文件中的列设置。为什么不使用您需要的布局创建平面文件连接(即减去 3 列)。然后(1)写入新文件。 (2) 删除不需要的文件 (3) 用旧文件名重命名新的平面文件? 【参考方案1】:-
删除您的连接管理器和源/目标(有效地重新开始)
使用新的 FF 连接添加平面文件源 (FFSRC)
根据需要设置 FFSRC(管道分隔、标题等)- 不要删除任何行
单击“确定”后,您将返回数据流。右键单击您的平面文件源,然后单击“显示高级编辑器”
转到“输入和输出属性”选项卡,然后展开 FFSRC 输出/输出列。点击一列,然后点击“删除列”。
使用新的连接管理器添加平面文件目标 (FFDST),并映射输入。
您的目的地现在不应该有这些列。
如果平面文件连接似乎因为动态名称而被重置,请考虑将它们作为表达式/变量提供。
为此,请单击源/目标的连接管理器节点(不是数据流节点),然后在“属性”中展开“表达式”。您将希望通过变量使ConnectionString
动态化。
【讨论】:
【参考方案2】:什么意思
它会不断恢复到带有额外列的入站文件布局,并在出站文件需要用管道分隔时继续返回到逗号分隔文件。
您是否尝试过直接引用该文件,然后设置文件类型(不规则右、定界或固定宽度),然后将表达式应用于连接管理器的 connectionstring 属性?
我建议衣衫褴褛,我可以指定任何我想要的“列”和宽度。
【讨论】:
以上是关于SSIS 包顽固的平面文件连接管理器的主要内容,如果未能解决你的问题,请参考以下文章