2010-03-10 4 views
2

저희 회사는 문제가 있습니다 : 저희는 고객으로부터 돈을 인출하기 위해 사용하는 애플리케이션 서비스 제공 업체 중 하나 인 NACHA files이 부정확 한 것으로 의심됩니다.awk를 사용하여 고정 너비 (NACHA) 파일 형식을 구문 분석하는 방법은 무엇입니까?

우리는 ACH 계약과 합법적 인 점보를 모두 갖추고 있으므로 ACH 네트워크를 사용하는 데 문제가되지 않으며 은행에서 일이 잘못되었다는 사실을 알지 못하기 때문에 판매 정보에서 파일을 만들면 서비스 공급자가 여전히 청구하는 일부 거래가 누락 된 것으로 의심됩니다.

내 작업 : NACHA 파일을 몇 달 동안 가져 와서을 해독하여 각 고객으로부터 얻은 내용과 계정에 입금 된 내용을 확인한 다음 영업 데이터, 은행 내역서 및 기타 정보와 비교하십시오 액세스/엑셀을 통해. 데이터에 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

+0

알아. 그리고 저는 인용 : Parse-O-Matic for Business는 연간 서비스 갱신 구성 요소와 함께 일회성 평면 라이센스 비용으로 판매됩니다. 일회용 라이센스는 1,995 달러입니다.00이며 1 년간의 업그레이드 및 유지 관리 릴리스가 포함됩니다. $ 1995.00까지 오랜 시간이 걸릴 수 있습니다. – atroon

+0

아하나, 나는 그들이 무료 판을 가지고 있음을 알았다. 그러나 그것이 비영리, 비영리적인 목적만을위한 것이 라기보다는 ... :-) – PhiLho

답변

2

gawk 정보 파일 (info gawk)을 보면 "3.6 고정 폭 데이터 읽기"섹션이 있습니다. gawk를 사용하는 경우 필요한 정보가 제공 될 수 있습니다. 그 파일

:

고정 폭 필드에 입력 레코드의 분할은 는 공간 분리 된 번호를 포함하는 문자열을 지정하여 지정된 기본 '변수 FIELDWIDTHS'.

+0

Excellent! 그 점을 지적 해 주셔서 대단히 감사합니다. 나는 내가 가지고 있었던 awk 참조 (불행하게도 날짜가 기입되었던) 참고에 그렇게 싸서하게되었다. 그리고 내가 정보 페이지를 결코 검사하지 않았던 온라인 스크립트를 보았다. – atroon

+0

그것은 작동합니다! 고맙습니다. – atroon