2012-11-13 6 views
0

CSV로 구문 분석해야하는 40KB EDI (고정 길이) 파일이 있습니다. edi를 안다면 각 요소마다 고정 된 길이가 있음을 알 수 있습니다.php/mysql을 사용하여 EDI 파일을 구문 분석합니다.

EDI 구문 분석에 새로운 내용이 있으며 약간의 도움이 필요합니다. 내 첫번째 생각 상기 ofter 소수점 우측에서 두 번째 위치를 나타낸다 배열 **는 S를 배열로 또는

Table EDIInfo 
EDI_ID   | EDI_ElemLengths 

1    | 3,22,7s2,30,30,22 
2    | 30,5s2,9s2,3,1,23 

으로 어느 요소의 길이를 유지하는 테이블을 설정한다.

그래서이 데이터를 db로 가져 오면 내 서버에있는 파일에 적용하려면 어떻게해야하는지 잘 모르겠다. 이 파일은 단순 텍스트 파일 인이 시점에서 확장 기능이 없습니다. 동일한 파일을 XXXX.csv 파일로 직접 파싱하고 싶습니다.

tuts 또는 도움말/방향에 대한 링크는 크게 감사하겠습니다.

EDI를 모르면 기본적으로 "요소"로 구성된 각 줄에 "레코드"가있는 텍스트 파일입니다. 각 "요소"는 할당 된 모든 공간을 차지하지 않더라도 해당 줄에 고정 된 수의 문자가 허용됩니다. 요소는 필드와 유사합니다 (예 : varchar 64와 같이 필드가 정의 된 것처럼 요소는 텍스트 파일에서 사용할 수있는 공백의 양으로 정의됩니다). 엘레멘트는 서로 부딪 히고, 엘레멘트 공간 할당 외부에는 구분자가 없다.

답변

0

EDI 요소는 기존의 정의에 의해 "고정 된 길이"하지 않습니다 감사합니다. 그 아이디어를 어디에서 얻었는지 확실하지 않습니다. 귀하의 진술 : "edi를 안다면 각 요소마다 고정 된 길이가 있음을 알 수 있습니다." 거짓입니다. 귀하의 진술 : "기본적으로"요소 "로 구성된 각 줄에"레코드 "가있는 텍스트 파일 또한 잘못되었습니다. 세그먼트 종결자가 CR 또는 LF이면 텍스트 편집기는 한 줄에 하나의 세그먼트로 렌더링합니다. 당신의 세그먼트 터미네이터가 물결표 (~) 였다면 파일은 텍스트 스트림이됩니다

EDI 사전에 따르면, 요소는 최소/최대 값을 가질 수 있습니다. 요소는 가변 길이이며 EDI는 구조화 된 구분 파일이며 유일한 고정 길이 세그먼트는 ISA (ANSI X12)

ANSI X12로 작업하는 경우 세그먼트, 요소 및 하위 요소의 세 가지 구분 기호가 있으며, ISA 세그먼트를 구문 분석하여 찾을 수 있습니다. 구분 기호가 있으면 구문 분석 할 수 있습니다 나머지 파일. 구분 기호로 구문 분석하는 경우 엘리먼트 길이에 대해 걱정할 필요가있는 유일한 시간은 표준 사전에 대한 구문 검사입니다.

EDIFACT로 작업하는 경우 동일한 일반적인 개념이 적용됩니다 (경계에서 구분 기호를 가져 오지만 6 개의 구분 기호가있을 수 있음). 나는 당신이 ANSI X12로 작업하고 있다고 가정하고 있습니다.

거기에는 수많은 파서가 있습니다. 당신은 바퀴를 재발 명하고 있습니다. 기존 파서에는 FA 생성 및 통신 도구가 포함되어있을 수도 있습니다. 많은 원시 EDI 데이터를보고 데이터 의미에 대한 컨텍스트가 필요한 경우이 무료 EDI 메모장 도구를 확인하십시오. http://liaison.com/products/integrate/edi-notepad

+0

동의하지 않음 00.00140 NAME SUPPLIER (처음 5 자에서 한 줄을 식별 한 다음 모든 위치가 고정되어 있음) – davidbonachera

+0

EDI 파일이 메이저 다음에 오는 전통적인 EDI 문서의 예를 들어 보겠습니다. 표준 (ANSI X12, EDIFACT)에는 구분 기호가 없습니다. 고정 길이 파일 (분리 문자가없는 레코드)은 기존 EDI 파일로 간주되지 않습니다. – Andrew

+0

물류 회사의 경우 일부 창고 관리 시스템은 순수한 위치 정보 EDI 솔루션을 구현합니다. 전통적인 EDI는 그것이 당신에게 의미가 무엇인지 모르지만, 유럽에서는 오래된 IBM i 시리즈 (AS/400)에 EDI를 구축 할 때 그러한 표준인지는 잘 모르겠습니다. – davidbonachera