2010-03-10 88 views
2

我的公司有一个问题:我们怀疑我们从我们的应用服务提供商那里收到的NACHA files我们用来从我们的客户那里提取款项是错误的。如何使用awk解析固定宽度(NACHA)文件格式?

我们拥有所有的ACH协议和合法的mumbo-jumbo,所以这不是我们使用ACH网络时的问题,而且我们也没有收到银行的消息说事情出错了,所以我们怀疑当从销售信息构建文件时,它缺少一些我们仍然由我们的服务提供商收取的交易。

我的任务:需要几个月的时间价值的NACHA文件和破译他们找出从每个客户得出什么沉积到我们的帐户,然后把它们比作销售数据,银行对账单等信息通过Access/Excel。使用MySQL作为数据。

在这一点上,awk(或类似的Linux命令行工具)是我有的工具;我不熟练'实际'的编程工具或练习,我更像是系统和数据库管理员。我不害怕让自己的手变脏,我只是没有很多编程经验,比如说阅读C#这类的东西。

我的主要困难在于使用实际的NACHA文件格式:它的宽度为94个字符,字段仅由其位置确定,没有分隔符。使用awk(以我以前的经验)依赖于字段分隔符变量,它是空白区域或其他任何东西......但我一直没有成功使用它通过位置梳理字段。由于每个文件中的记录类型不同,我需要使用类似awk的东西,文件中有5种不同的线型:1,5,6,8和9.类型1和9是外部组,带有标题信息,5和8是批头线。类型6线是细节。我最初的计划是将标题信息读入变量,然后在每行上复制它,基本上将它解规格化为一个大表(或CSV,在此期间),每个单独事务记录一条记录,与所有标题信息相关联批处理和一天,所以:

[transaction data1, data2],[batch data1, data2],[file info1, info2, etc] 
[transaction data1, data2],[batch data1, data2],[file info1, info2, etc] 
[transaction data1, data2],[batch data1, data2],[file info1, info2, etc] 

我赞成建立一个工具,可以做到这一点在连续的基础向前发展,因为它会成为数据监测,我们做每日/每周的基础上的零件。

那么,如何使用awk或类似的工具来反规范化NACHA文件?如果工作有更好的工具,我很乐意听到它。不幸的是,我在网上搜索中找不到任何东西。

+0

有趣的是,您提供的NACHA格式链接显然是可以用于您需要执行的任务的工具。你试过了吗? – PhiLho 2010-03-10 17:35:19

+0

我知道。我引用: Parse-O-Matic for Business作为一次性固定许可费出售,并且每年都有一个服务更新组件。 一次性单位牌照售价为1,995美元。00,包括一年的升级和维护版本。 需要几个小时才能达到$ 1995.00。 – atroon 2010-03-10 17:51:03

+0

啊,我明白了,我看到他们有一个免费版,但并不是说它只用于非商业,非盈利的用途...... :-) – PhiLho 2010-03-11 16:55:30

回答

2

如果您查看gawk信息文件(info gawk),则会出现一个名为“3.6读取固定宽度数据”的部分。如果您使用gawk,这可能会提供您需要的信息。

从该文件:

输入记录的分裂成固定宽度的字段被指定通过分配容纳空间分隔的数字字符串 到 内置变量`FIELDWIDTHS”。

+0

非常棒!非常感谢您指出这一点;我已经得到如此包装在(不幸过时的)awk参考中,并且在线查看脚本,我从未检查过信息页。 – atroon 2010-03-10 19:13:10

+0

它的工作原理!非常感谢你。 – atroon 2010-03-11 13:56:08