【发布时间】:2015-04-02 20:37:22
【问题描述】:
我有一个要加载到 SQL 中的平面文件,该平面文件有 2 个不同的 RecordTypes 和 2 个基于 RecordType 的不同文件布局。 所以我可能有
000010203201501011 (RecordType 1)
00002XXYYABCDEFGH2 (RecordType 2)
所以我想立即检查 RecordType1 的记录,然后通过 [Derived Column] & [Data Conversion] & [Loading to SQL] 发送这些记录
我想忽略 RecordType2 的所有记录。
我尝试了条件拆分,但似乎 RecordType2 的记录仍在尝试通过 [Derived Column] 和 [DataConversion] 步骤。
它在 RecordType2 记录上给我一个 DataConversion 错误。
我已将条件拆分设置为 RecordType == 1,以通过我设置的流程。
我猜条件拆分没有设置为以这种方式使用? 在我的流程中,我可以告诉它检查 RecordType1 并仅发送超过 RecordType=1 的记录?
【问题讨论】:
-
这似乎不是一件应该很难做到的事情?我不知道为什么我在网上找不到更多关于这个的信息?
-
SSIS 不能很好地处理混合记录格式的文件。大型机喜欢它们,SSIS 讨厌它们。
-
也就是说,您没有提供足够的信息来解决您的问题。如果您的 Ragged Right 平面文件连接管理器定义为 2 列,
RecordType是长度为 5 的 DT_STR,TheRest是前 5 个字符之外的所有内容。如果您的 Conditional Split 正在测试00001,那么唯一可能沿着这条路线走的就是 1 条记录 -
我的平面文件由 530 个列名定义。 - 直到 2015 年,所有记录都是 RecordType1。现在他们将 RecordType2 包含在同一个文件中。 RecordType 2 只有 190 列(最后有一个 Filler 以使其与 RecordType1 的长度相同。
-
我发现的一件事是我需要在开始时将平面文件源编辑器中的所有截断和错误设置为“忽略”。现在我已将所有设置为“忽略失败”,我可以进入条件拆分。在条件拆分中,我有一个 RecordType==1 的表达式。然后我将默认条件设置为 RowCount。看来我现在已经接近了。