2013-12-07 4 views
0

DeNormalized 텍스트 파일 1에서 정규화 된 테이블을 어떻게 작성합니까?DeNormalized 텍스트 파일 1에서 정규화 된 테이블을 작성하는 방법은 무엇입니까?

답장을 보내 주셔서 감사합니다.

DeNormalized 텍스트 파일에서 정규화 된 DB 테이블을 작성해야합니다. Unix 쉘, PostgreSQL 등 몇 가지 옵션을 살펴 보았습니다.이 커뮤니티에서 더 좋은 아이디어를 배우고 있습니다.

입력 텍스트 파일은 쉼표로 구분 된 레코드가있는 다양한 길이입니다. 내용은 다음과 같을 수 있습니다

XXXXXXXXXX , YYYYYYYYYY, TTTTTTTTTTT, UUUUUUUUUU, RRRRRRRRR,JJJJJJJJJ 
111111111111, 22222222222, 333333333333, 44444444, 5555555, 666666 
EEEEEEEE,WWWWWW,QQQQQQQ,PPPPPPPP 

우리는 (분할 & 쌍)을 다음과 같이 정상화 좋아 :

XXXXXXXXXX , YYYYYYYYYY 
TTTTTTTTTTT, UUUUUUUUUU 
RRRRRRRRR,JJJJJJJJJ 
111111111111, 22222222222 
333333333333, 44444444 
5555555, 666666 
EEEEEEEE,WWWWWW 
QQQQQQQ,PPPPPPPP 

우리가 텍스트 사전 처리 및 부하 접근 방식으로 이동해야합니까?

그렇다면 사전 처리하는 가장 좋은 방법은 무엇입니까?

위와 같은 SQL/함수 접근법이 있습니까?

감사합니다.

+1

수정 된 것으로 보입니다. http://stackoverflow.com/q/20433479/398670 –

답변

3

awk '{$1=$1} NR%2==1 {printf "%s,",$0} NR%2==0' RS="[,\n]" file 
XXXXXXXXXX,YYYYYYYYYY 
TTTTTTTTTTT,UUUUUUUUUU 
RRRRRRRRR,JJJJJJJJJ 
111111111111,22222222222 
333333333333,44444444 
5555555,666666 
EEEEEEEE,WWWWWW 
QQQQQQQ,PPPPPPPP 

{$1=$1}가 정리 및
NR%2==0 인쇄에도 일부와 새 광고
RS="[,\n]"을 추가 공간을 제거
NR%2==1 {printf "%s,",$0} 인쇄 홀수 부분 (인해 RS에 대한) gnu awk,하거나 기록을 설정하여 개행

+0

의견을 보내 주셔서 감사합니다. 나는 노력했다. 그것은 작동합니다. ** RS = .. 일부 레코드 끝에^M을 붙이시겠습니까? ** 각 레코드 끝에 쉼표가 많은 동일한 형식이 있습니다. 'XXXXXXXXXX, YYYYYYYYYY, TTTTTTTTTT, UUUUUUUUU, RRRRRRRRR, JJJJJJJJ ,,,,,,,,,,,'awk 명령을 사용하여이 파일을 어떻게 처리합니까? – user2647763

+0

'^ M '을 (를) 추가하지 않습니다. 'awk '{$ 1 = $ 1} NR % 2 == 1 && $ 0 {printf "% s", $ 0} NR % 2 == 0 && $ 0 'RS = "[, \ n]"파일 " – Jotne

1

다음은 업데이트입니다. 다음은 Linux 서버에서 수행 한 작업입니다.

sed -i 's/\,,//g' inputfile <------ Clean up lot of trailing commas 

    awk '{$1=$1} NR%2==1 {printf "%s,",$0} NR%2==0' RS="[,\n]" inputfile <----Jotne's idea 

    dos2unix -q -n inputfile outputfle <------ to remove ^M in some records 

    outputfile is ready to process as comma delimited format 

위의 단계를 더 향상시킬 생각이 있습니까?

도와 주셔서 감사합니다.