我非常熟悉常规分隔文本数据文件的SSIS解析,但是,我正在寻找一些方法来解决一个看起来像这个测试文件的文件:
ISA*00* *00* *01*220220220 *ZZ*RL CODE 01*060327*1212*U*00300*000008859*0*P*:~
GS*RA*CPA-BPT*LOCALUTILITY*060319*1212*970819003*X*003030~
ST*820*000000001~
BPR*C*321.91*C*X12*CBC*04*000300488**9918939***04*000300002**1598564*070319~
TRN*1*00075319970819105029~
REF*RR*0003199708190000174858~
DTM*097*070318~
DTM*107*070318~
N1*PR*DIRECT PAYMENT~
N1*PE*ABC CORPORATE BILLER*ZZ*90005836~
ENT*1~
N1*PR*BILLING - TEST - NATTRASS~
RMR*CR*0009381082105011**142.15~
REF*TN*000303965~
DTM*109*070316~
ENT*2~
N1*PR*BILL FREID TEST~
RMR*CR*0011010451800011**179.76~
REF*TN*000304189~
321.91是交易的总和。
我更喜欢用SSIS做这个,但也可以创建一个C#解析器。
建议将不胜感激。
谢谢。
答案 0 :(得分:2)
对此没有简单的答案。 SSIS的平面文件数据源除最简单的格式外无法处理任何内容。我已经使用平面文件任务读取粗糙的右侧或reccord类型的平面文件作为一个大列。然后,我将通过脚本任务运行它来处理解析。对不起,没有比那更简单的答案...你会认为会有。
答案 1 :(得分:2)
上面显示的文件称为“837文件”。您可以搜索837文件解析器或在c#中解析此类文件的方法。我没有链接,但至少这应该至少帮助你找到解决方案(记住:“837文件”)
(顺便说一句,我认为这违反了HIPAA规则。你不能公开发布/发布。尽管数据可能是虚构的,但你不能真正发布这样的内容。请仔细检查)
03/18/10更新:
我找到了"How To Read the ANSI 837 File" doc here(PDF下载)
03/26/10更新:
我发现了更多相关信息。该示例可能根本不是837文件。它似乎是ANSI X12 - EDI标准。请查看EDI Mapping doc (pdf)
以及此Google Search Result on EDI X12
请为此问题发布解决方案,以便任何需要答案的人都能从中受益; - )
答案 2 :(得分:0)
此示例文件对于要处理的常规平面文件数据源组件而言会很复杂。使用SSIS执行此操作的唯一方法是使用脚本组件作为数据流中的源。然后,您可以访问所有.Net Framework库,然后您就可以在该组件中创建自定义的c#或vb(使用2008)或vb(使用2005)解析器。祝你好运!
答案 3 :(得分:0)
假设在SSIS中执行此操作不是一个干净的选项,您可以使用开源File Helpers库来有效地编写C#解析器。
文件助手对于解析分隔文件和固定长度文件非常有用。