当前位置: 首页 > 知识库问答 >
问题:

如何使用BeanIO将一条记录中的字段复制到另一条记录

苏乐
2023-03-14

我正在尝试访问record2中的“AccountNumber”字段的数据作为“属性”。文件格式为平面文件(format=“fixedlength”)。请帮帮我。

xml prettyprint-override"><beanio xmlns="http://www.beanio.org/2012/03">
    <stream name="Definitions" format="fixedlength">
        <record name="header" order="1" minOccurs="1" maxOccurs="1" class="map">
            <field name="recordType"  literal="HD" position="0" length="2" rid="true"/>
        </record>
        <group name="Sample" order="2" minOccurs="0" maxOccurs="unbounded" class="map">
                <record name="record1" order="1" minOccurs="1" maxOccurs="1"  class="map">
                    <field name="type" rid="true" literal="PP" position="0" length="2"/>
                    <field name="accountNumber" position="2" length="30"/>
                </record>
                <record name="record2" order="2" minOccurs="0" maxOccurs="unbounded" class="map" collection="list" >
                    <field name="type" rid="true" literal="FF" position="0" length="2"/>
            < ******------ I want to access the "accountNumber" here ------****** />
                </record>
        </group>
        <record name="trailer" order="3" >
            <field name="recordType" rid="true" literal="TT" position="0" length="2"/>
        </record>  
    </stream>
</beanio>

示例数据:

HD                                 
PPXXXXXXXXXXXXXXXXXXXXXXXXXXX   
FF                                    
FF                                    
PPYYYYYYYYYYYYYYYYYYYYYYYYYYY                  
FF                                    
FF                                    
TT

共有1个答案

勾喜
2023-03-14

我想你在看完所有的唱片后就得自己做组合了。这是可能的,因为record1中的信息将存在于sample组的映射中。您必须遍历每个record2并设置record1中的信息。

我还没有完全实现它,但我很快就会实现,下面是我使用Spring-Batch的策略:

  • 我不对记录进行分组。
  • 为这两个记录创建不同的类。
  • 使用bean-ioItemReader设置批处理作业。
  • ClassifierCompositeItemProcessor添加到带有SubclassClassifier的作业中。
    • 类型映射将两个记录的类映射到特定的itemprocessors,
    • Record1ItemProcessor将该记录中的信息添加到步骤的ExecutionContext中,并返回null,以避免调用ItemWriter

 类似资料:
  • 我有记录列表显示在一个div和另一个div。在一个div中显示前10条记录,在另一个div中显示其他以下记录。我试图得到它,但没有显示结果 密码

  • 问题内容: 如标题所示,我想选择以分组的每组行的第一行和最后一行。 我在此表中包含以下数据: 我需要获取的是列开头的第一个值和列末尾的最后一个值,并按group by group列进行分组。 结果表应如下所示: 我使用和和进行了查询。它可以在SQL Server 2012中使用,但不能在SQL Server 2008中使用。我需要一个可以在SQL Server 2008中执行的查询。 问题答案:

  • 我在Google BigQuery中有一个表,它由几个字段组成,然后是一个可能包含一个或多个对象的重复记录。我想在重复数据中创建一个新表,其中包含一个额外字段,并将原始数据复制到新表中,用GENERATE_UUID()的输出填充新字段,以便每个重复数据行都有一个唯一标识符。 我有一个类似的问题,当目标包含重复字段时,如何从一个BigQuery表复制到另一个?但我不知道如何调整它以适应我当前的用例。

  • 问题内容: 我想通过将记录从一张桌子移到另一张桌子来对学生进行归档。这是我尝试使用的代码: 我遇到的问题是我遇到错误: 致命错误:XX行/archive-student.php中的内存不足(已分配80478208)(试图分配80216043字节) 除了有一个名为archive的列并从0更改为1之外,是否有其他方法可以执行此操作?这是因为我有30-50页选择表的记录。:) 问题答案: 就那么简单。

  • 问题内容: 我有一个这样的 LoginTime 表: 我想删除的最后一条记录。用户的最后一条记录可以通过识别。 如何使用一个查询执行此操作。 问题答案: 您需要按user_id(例如WHERE user_id = 1)过滤表,然后按时间(例如ORDER BY datetime)对其进行排序,然后将查询限制为一项(例如LIMIT1),然后删除此查询的结果。最后,您将获得如下查询:

  • 问题内容: 我正在尝试获取“分组”记录的第一条记录和最后一条记录。 更准确地说,我正在执行这样的查询 但我想获得小组的第一和最后的记录。可以通过执行大量请求来完成,但是我的桌子很大。 是否有使用MySQL的方法(如果可能的话,可以减少处理时间)? 问题答案: 您要使用和: 这避免了昂贵的子查询,并且我发现对于这个特定问题它通常更有效。 请查阅手册中的两个函数以了解它们的参数,或访问本文,其中包含有