2012-02-25 4 views
-2

SQL 데이터베이스로 가져 오려는 여러 개의 텍스트 파일이 있습니다. 데이터는 쉼표로 구분되지 않으므로 쉼표로 데이터를 가져 오는 아이디어를 사용하지 않습니다. 그러나 데이터는 여러 행에 걸쳐 있습니다. 아래 예제 텍스트 파일을 참조하십시오. 제발 누군가가 내가 프로그래밍 된 평균 값, 교대 번호 등 특정 데이터를 가져올 수있는 조언을 수 있습니까?텍스트 파일을 SQL 데이터베이스로 가져 오기

enter image description here

답변

-1

당신은 정규식을 사용하여 파일의 내용을 분석 한 라인으로 바꿀하고, 필요한 경우 세미콜론을 삽입하는 C#에서 간단한 응용 프로그램을 작성할 수 있습니다.

0

시스템에서 생성 한 보고서가있는 것 같습니다. 이상적인 접근법은 해당 기계가 '/////'이 없거나 그 쓰레기가없는 보고서를 가져오고 가져 오는 데이터 만 가져 오는 것입니다. 따라서 새 보고서의 출력은 다음과 같을 수 있습니다.

shift_num, prog_min, mean_sec, att_sec, adt_min 
1, 600, 599, 658, 210 
... 

사실 실제로 보고서를 얻는 것이 가능하지 않습니다. 즉, 컴퓨터에서 이 항상이지만 가능한 경우 사람이 내키지 않는 경우가 많습니다. 그런 경우 자주 사용하는 텍스트 처리 언어를 사용하여 보고서를 사용 가능한 데이터로 변환하십시오.

나는 이런 종류의 물건에 awk를 좋아한다. perl을 좋아하는 사람도 있습니다.


설명하기 위해 보고서의 복제본을 입력했습니다. (test.dat로 저장되었습니다.)

ORDER Nr FG68909     Q.ty Ordered 99 
... 
             SHIFT Nr. 1 

//////// 
PROGRAMMED       MEAN 

600 min      JOB TIME  599 sec 




AVERAGE Turnaround Time 658 sec 
AVERAGE Delivery Time 210 mins 

그러면이 awk 프로그램을 작성했습니다. 보고서의 레이아웃에 대해 많은 가정을합니다. 그들 중 일부는 실제 데이터에 실패 할 것입니다.

/SHIFT/ {shift = $NF} 
/JOB TIME/ { 
    programmed = sprintf("%d %s", $1, $2); 
    mean = sprintf("%d %s", $(NF-1), $NF); 
} 
/AVERAGE Turnaround/ { avg_turnaround = sprintf("%d %s", $(NF-1), $NF);} 

# Assumes the line "AVERAGE Delivery" is also the end of the record. 
/AVERAGE Delivery/ { 
    avg_delivery = sprintf("%d %s", $(NF-1), $NF); 
    printf("%d, '%s', '%s', '%s', '%s'\n", shift, programmed, mean, avg_turnaround, avg_delivery); 
    # Clear the vars for the next record. 
    shift = ""; 
    programmed = ""; 
    mean = ""; 
    avg_turnaround = ""; 
    avg_delivery = ""; 
} 

출력. . .

$ awk -f test.awk test.dat 
1, '600 min', '599 sec', '658 sec', '210 mins' 
+0

쉼표를 사용하여 데이터를 가져올 수 있다는 것을 알고 계시나요? 공백 개수 또는 고정 길이를보고 데이터를 가져 오는 것과 같은 것이 있습니까? – Blob

+0

예, * I *는 고정 폭 데이터를 가져올 수 있으며 OP는 고정 폭 데이터를 가져올 수 있습니다. 그러나 그는 폭 데이터가 고정되어 있지 않습니다. 그는 보고서를 파일에 저장했습니다. –

+0

안녕하세요. 아직 AWN과 AWKA를 연구했지만 여전히 분실했습니다. 각 튜토리얼이나 각 텍스트 파일에서 특정 데이터를 추출하는 더 쉬운 방법이 있는지 궁금한가요? 감사합니다 – Blob

관련 문제