【发布时间】:2018-04-13 18:18:35
【问题描述】:
我刚刚开始使用 SSIS,并且已经处理了以下问题:
我有一个从 VMS 应用程序导出的主/详细(各种)平面文件(重新格式化文件或以不同方式提供输出的可能性为零)。文件内容是按位置定义的(谢天谢地,我有文件定义可以使用),就像这样
HD01 - Header record - 82 positions, 12 columns
IN01 - Invoice header - 438 positions, 54 columns
IN02 - Credit Note header - 438 positions, 33 columns
IN03 - Invoice detail - 507 positions, 41 columns
IN04 - Credit detail - 164 positions, 46 columns
HD01 仅在文件顶部出现一次,而 IN01 - IN04 出现多次。
我可以使用平面文件源连接加载数据文件,但我需要将所有记录类型加载到它们各自的目标表中。我能做的最好的事情是读取文件,并将每种记录类型的内容放入一个暂存表中,其中每个表有 2 列:记录类型(HD01、IN01 等),其余的来自数据文件的相应行,但是从数据文件到表格的字符转换会导致奇数字符(即:日期应该是黑色块)。
我想我的问题有两个: 1 - 如何使用我知道的数据格式将源数据文件正确拆分为 5 个目标表? 2 - 我的角色翻译怎么了?
【问题讨论】:
-
是否也可以提供一些数据?你会收到 IN01 类型的每一行的前缀吗?
-
不能提供样本数据(高度专有),但是每个前缀出现在每一行,所以任何一行的前 4 个字符将是它的记录类型
-
您是否尝试过使用平面文件源读取文件并提取派生 col 中的前 4 个字符,然后使用条件拆分将记录发送到 5 个目标?
-
正如我所提到的,我可以为每种记录类型获取一个 2 列表:Col_1 是记录类型,Col_2 是在线上的所有其他内容。我遇到的问题是如何将 Col_2 拆分为记录定义的其余部分?