2017-09-06 4 views
0

그럼 우리가 내가 총 3 개 행이 포함 된 .txt 다음과 같은 파일이 있다고 가정 해 봅시다 :.txt 파일에서 Oracle 테이블로 값 변환 및로드 | 유닉스 | 오라클

cat my_file_to_load.txt 

993408 
Sep 01 12:46:46 2017 
Sep 01 12:46:51 2017 

파일은 큰 로그 파일에서 특정 데이터의 추출이다. 첫 번째 행은 success_rows 수이고 두 번째 행은 start_time이고 세 번째 행은 end_time입니다. 이 경우 내 요구 사항은 "형식"데이터가 따라 순서대로 아래의 스크립트에 의해 정의 된 Oracle 테이블에로드하는 것입니다 내 이상적인 출력이 표에 모두 볼 것 무엇

CREATE TABLE ABC.TEST_PP 
(
    SUCCESS_ROWS VARCHAR2(100 BYTE), 
    START_TIME VARCHAR2(100 BYTE), 
    END_TIME  VARCHAR2(100 BYTE) 
) 

(우리가 여러 있습니다. 그래서 각 행은 다음과 같이 설명 될 것이다 TXT 파일) :

SUCESS_ROWS START_TIME   END_TIME 
993408   01/09/2017 12:46:46 01/09/2017 12:46:51 

내가 아는, 내가 그들을로드 SQLLDR을 사용합니다. 관련 정보를 정의하려면 .ctl 파일을 적절히 작성해야한다는 것을 알고 있습니다.

.txt 파일의 데이터를 변환하여 위의 테이블에로드하는 방법에 대해 친절하게 도와 주시겠습니까?

은 어떤 도움이 정말 많이 주시면 감사하겠습니다 :)

은, 시간 내 주셔서 대단히 감사 좋은 하루 되세요.

+0

당신은 (예를 들어, 각 행의 끝에 문자를 추가 할 수 있습니다. 쉼표 ',')? – etsa

+0

예 가능합니다 (허용) –

답변

0

순간에 나는이 해결책을 발견했다. 모든 줄 끝에 고정 된 문자를 추가해야합니다 (예 : 쉼표 ','). 데이터 파일 이름은 test3.csv이고 ctl 파일 이름은 TEST3.CTL입니다.

명령 행 :

sqlldr ERRORS=100000 userid=xxx/yyy control=TEST3.CTL data=test3.csv log=test3.log bad=test3.bad skip=0 

CTL

LOAD DATA 
CHARACTERSET WE8ISO8859P1 
APPEND 
CONCATENATE 3 
INTO TABLE TEST_PP 
FIELDS TERMINATED BY ',' 
TRAILING NULLCOLS 
( 
SUCCESS_ROWS , 
START_TIME , 
END_TIME 
) 

샘플 데이터 파일 :

993408, 
Sep 01 12:46:46 2017, 
Sep 01 12:46:51 2017, 
993412, 
Sep 02 10:22:46 2017, 
Sep 02 11:44:51 2017, 

출력 테이블 :

993408 Sep 01 12:46:46 2017 Sep 01 12:46:51 2017 
993412 Sep 02 10:22:46 2017 Sep 02 11:44:51 2017 

로그 파일

Table TEST_PP, loaded from every logical record. 
Insert option in effect for this table: APPEND 
TRAILING NULLCOLS option in effect 

    Column Name     Position Len Term Encl Datatype 
------------------------------ ---------- ----- ---- ---- --------------------- 
SUCCESS_ROWS      FIRST  * ,  CHARACTER    
START_TIME       NEXT  * ,  CHARACTER    
END_TIME        NEXT  * ,  CHARACTER    


Table TEST_PP: 
    2 Rows successfully loaded. 
    0 Rows not loaded due to data errors. 
    0 Rows not loaded because all WHEN clauses were failed. 
    0 Rows not loaded because all fields were null. 


Space allocated for bind array:     49536 bytes(64 rows) 
Read buffer bytes: 1048576 

Total logical records skipped:   0 
Total logical records read:    2 
Total logical records rejected:   0 
Total logical records discarded:  0 

Run began on Wed Sep 06 12:17:55 2017 
Run ended on Wed Sep 06 12:17:55 2017 

Elapsed time was:  00:00:00.08 
CPU time was:   00:00:00.01 
+0

좋아요, 유효한 하나입니다! 와우 감사합니다 ..하지만 쉼표는 각 행의 끝에 허용되지 않습니다? 또한 테이블에로드 할 수 있도록 날짜 형식을 변환하지 않아야합니까? –