将较大的输入平面文件分批为具有特定计数的较小的多个输出文件

时间:2019-02-04 09:33:27

标签: biztalk biztalk-2010

我有以下类型的位置输入平面文件模式。

<Employees>
    <Employee>
        <Data>  

在映射中,我需要基于位置提取字符串以传递到目标架构。

我具有以下条件-

  1. 如果数据有500条记录,则在输出位置应有5个文件(100条记录)。
  2. 如果数据有522条记录,则输出位置应有6个文件(5 * 100、1 * 22记录)。

我尝试了

这样的互联网建议
  1. 将“允许在Infix根目录下拆分邮件”设置为“是”,并将maxoccurs设置为“ 100”。这似乎不起作用。 How to Debatch (Split) a Flat File using Flat File Schema ?

  2. 我也正在研究Split Flat Files into smaller files (on row count) using Custom Pipeline上建议的自定义接收管道组件,但是我对此很陌生,因此需要一些时间。

如果没有实现自定义管道组件的方法,请告诉我是否有更简单的方法。

我正在按照以下方法将输入的平面文件按照条件分为多个小文件,并在接收位置进行写入,然后使用本机平面文件分解器处理这些文件。如果有更好的方法,请纠正我。

2 个答案:

答案 0 :(得分:0)

不编写自定义C#代码的简单文件结构的简单方法是仅使用数据库表。只需将整个文件作为记录插入表中,然后有一个“接收位置”将以所需的批处理大小轮询记录。

另一种方法称为“散点图收集模式”,在这种情况下,您将Occurs设置为1,这将将分批发送到各个记录中,然后您可以进行业务流程将其重新组合为所需的批处理大小。为此,您必须阅读有关“关联集”的信息。

答案 1 :(得分:0)

您有两个选择:

  1. 使用SSIS将平面文件导入到SQL表中。
  2. 将输入文件解析为一个消息,然后映射到“复合操作”以将记录插入到SQL表中。您也可以在插入更新报文中使用。

在1或2之后,调用存储过程以检索所需消息的计数和顺序。