2

我的公司有一个问题:我们怀疑我们从我们的一个应用程序服务提供商那里收到的用于从客户那里提取资金的NACHA 文件是不正确的。

我们有所有的 ACH 协议和合法的大话,所以我们使用 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 文件进行非规范化处理? 如果有更好的工具来完成这项工作,我很高兴听到它。不幸的是,我在网上搜索中没有找到任何东西。

4

1 回答 1

2

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

从那个文件:

通过将包含空格分隔的数字的字符串分配给内置变量“FIELDWIDTHS”来指定将输入记录拆分为固定宽度的字段。

于 2010-03-10T18:03:13.147 回答