0
我有一個固定長度的文件,格式如下。編組詳細記錄沒有脫離文字
X - 頁眉
ý - 掛車
的數據記錄不具有文字的第一個字符的任何標識符。
樣本數據:
X10506505
RANDOM00 DATA1
RANDOM00 DATA2
Y0000001
頭記錄解析罰款。
問題:由於明細記錄沒有任何唯一標識符,所以尾部記錄正在映射到明細記錄。
如何區分拖車記錄和詳細記錄?
我有一個固定長度的文件,格式如下。編組詳細記錄沒有脫離文字
X - 頁眉
ý - 掛車
的數據記錄不具有文字的第一個字符的任何標識符。
樣本數據:
X10506505
RANDOM00 DATA1
RANDOM00 DATA2
Y0000001
頭記錄解析罰款。
問題:由於明細記錄沒有任何唯一標識符,所以尾部記錄正在映射到明細記錄。
如何區分拖車記錄和詳細記錄?
以下mapping.xml
文件適合我。你會看到我在多個領域使用rid
。這使得BeanIO在線使用更多的數據來識別正確的記錄。
<stream name="dummy" format="fixedlength" minOccurs="1" maxOccurs="1" >
<group name="myFile" class="com.company.project.File" >
<record name="header" class="com.company.project.Header" minOccurs="1" maxOccurs="1">
<field name="id" rid="true" length="1" required="true" literal="X" />
<field name="h1" rid="true" length="8" required="true" regex=".{8}" />
<field name="h2" length="4" required="false" minOccurs="0"/>
</record>
<record name="detailRecords" class="com.company.project.Detail" minOccurs="1" maxOccurs="unbounded" collection="collection">
<field name="d1" rid="true" length="9" required="true" regex=".{8,9}" />
<field name="d2" rid="true" length="5" required="true" regex=".{5}" />
<field name="d3" length="5" required="false" minOccurs="0"/>
</record>
<record name="trailer" class="com.company.project.Trailer" minOccurs="1" maxOccurs="1">
<field name="id" rid="true" length="1" required="true" literal="Y" />
<field name="tValue" rid="true" length="7" required="true" regex=".{7}" />
</record>
</group>
</stream>
如果這不適合你,我需要更具體的數據細節,如果可能的話,實際的數據。
測試1:
X10506505
RANDOM00 DATA1
RANDOM00 DATA2
Y0000001
輸出:
Header: id='X', h1='10506505'
Detail: d1='RANDOM00', d2='DATA1'
Detail: d1='RANDOM00', d2='DATA2'
Trailer: id='Y', tValue='0000001'
試驗2:
X10506505
RANDOM00 DATA1
RANDOM00 DATA2
XANDOM00 DATA3
YANDOM00 DATA4
Y0000001
輸出:
Header: id='X', h1='10506505'
Detail: d1='RANDOM00', d2='DATA1'
Detail: d1='RANDOM00', d2='DATA2'
Detail: d1='XANDOM00', d2='DATA3'
Detail: d1='YANDOM00', d2='DATA4'
Trailer: id='Y', tValue='0000001'
感謝也必須去爲他的幫助同事(馬爾科姆·麥克萊恩)。
詳細記錄以'X'或'Y'開頭的概率是多少? – nicoschl
它有一個100%的機會,預告片和標題記錄以X/Y開始。 – Purus
我在想,你也許可以用一個正則表達式來表示任何不以標題開頭的內容,而且尾標是詳細記錄。對不起,除此之外,沒有真正的方法來識別詳細記錄。 – nicoschl