我试图在其他问题中找到答案,并且没有一个“标准”答案正常工作,所以我希望有人可以指出我已经回答的地方,或者可以告诉我如何这样做。
我有一个包含多个文档的大文件。对于样本,假设这样的
DOCUMENT_IDENTIFIER 123400000000000000000123457 OTHER STUFF HERE
LINE WITH STUFF HERE
LINE WITH STUFF HERE
DOCUMENT_IDENTIFIER 123500000000000000000127456 OTHER STUFF HERE
LINE WITH STUFF HERE
LINE WITH STUFF HERE
现在,我需要保留DOCUMENT_IDENTIFIER
行中的所有内容,从第一个0开始到123
(或第二个文档中的127
)标题行加上它下面的所有LINE WITH STUFF HERE
行应该构成一个文档,新文档应该从第二个DOCUMENT_IDENTIFIER
行开始。
当我尝试使用标准的Debatching技术时,管道失败:要么完全失败(例如,当我尝试为管道定义标题和主体模式时),要么它永远不会启动第二个文档(如果我只尝试一个身体模式。
我确信这是相当简单的事情,但我完全不知道如何完成它。欢迎提出任何建议/指示。
如果重要的话,我现在停留在BT2006 R2上。
答案 0 :(得分:0)
你的身体架构是什么样的?我会开始做到这一点,并确保你有一些东西,将创建xml与所有“DOCUMENT_IDENTIFIER 1234”记录的单独记录。
我会使用“DOCUMENT_IDENTIFIER”1234位作为标记标识符,然后我将标记偏移设置为4,以避免前4个字符。
你应该有一个
RecordForDocumentIdentifiers(模式的根)组Maxoccurs = * RecordForDocumentIdentifier(在此处设置标记标识符) 要解析的列的字段
RecordForOtherLines Group Maxoccurs=*
RecordForOtherLine Maxoccurs=* or whatever your rules are.
Fields for the columns of other lines
当这似乎解析你的例子没问题,并生成你想要的XML时,我会从那里开始创建我的标题和正文模式。我知道这是两个步骤,但它需要一些猜测。
我猜Header模式将从RecordDocumentIdentifier中选取,而body将是RecordForOtherLines(其外部记录)。
我希望有所帮助。如果没有,请发布您的实际文件和架构,让我们看看它。