Как использовать awk для анализа формата файлов фиксированной ширины (NACHA)? - PullRequest
2 голосов
/ 10 марта 2010

У моей компании есть проблема: мы подозреваем, что 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]

Я предпочитаю создавать инструмент, который может делать это на постоянной основе в будущем, потому что он станет частью мониторинга данных, который мы делаем ежедневно / еженедельно.

Итак, как я могу денормализовать файл NACHA с помощью awk или какого-либо подобного инструмента? Если есть лучший инструмент для работы, я более чем рад услышать об этом. К сожалению, я ничего не нашел в своем поиске в Интернете.

1 Ответ

2 голосов
/ 10 марта 2010

Если вы посмотрите на информационный файл gawk (info gawk), есть раздел под названием «3.6. Это может предоставить необходимую вам информацию, если вы используете gawk.

Из этого файла:

Разделение входной записи на поля фиксированной ширины определяется путем присвоения строки, содержащей разделенные пробелами числа встроенная переменная `FIELDWIDTHS '.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...