대용량 로그를 SQL Developer 또는 프로그램에서 넣으니까...
아카이브에 백업 로그가 엄청 쌓여서 풀찬다.
그래서, 찾아보니, sql로더를 사용해서 넣으라고 하더라...
먼저 sqlldr 이 설치 되어 있는지 확인해 보고, 없으면 설치해야한다.
cmd 명령 프롬프트에서 sqlldr을 실행해보고, 찾을수 없으라고 뜨면, 설치부터 진행
구조를 설명하면, ctl 파일(콘트롤파일)에 입력값에대한 정보를 작성해야한다.
그리고, sqlldr 를 실행하면 된다.
C\user> sqlldr 디비접속정보 CONTROL= ctl파일명 LOG = 로그파일명
하지만, 저렇게 하면, 매번 써야되는 불편함이 있어서,
bat 파일을 생성해서 위 실행문을 미리 적어 놓고, bat 파일을 실행했다.
먼저 ctl 파일부터 설명하면,
LOAD DATA
CHARACTERSET UTF8
INFILE 'log_202004.txt'
BADFILE 'log_202004.bad'
DISCARDFILE 'log_202004.dsc'
APPEND
INTO TABLE "DB_USER_NAME"."TABLE_NAME"
FIELDS TERMINATED BY X'9'
(FIELD1_NM,
FIELD2_NM,
FIELD3_NM char(4000),
FIELD4_NM char(4000),
FIELD5_NM char(4000),
FIELD6_NM)
CHARACTERSET 은 한글이 있으므로, UTF8로 적어준다.
INFILE 은 넣을 DATA의 TXT 파일이다.
BADFILE은 입력이 들어가지 않은 라인의 정보 모음이다.
BADFILE 이 생성되면, 들어가지 않은 데이터가 생겼으므로, BAD 파일의 로그만 따로 정리해서 다시 실행하면 된다.
(이게 생각보다 편하다... 전체 지우고 다시 넣는게 아니라...값이 잘못된서 못 들어간 정보만 확인해서 다시 넣을 수 있으므로..)
그리고, INTO TABLE 에 처음에 DB 유저명을 적고, 점 뒤에 넣을 테이블 명을 적으면 된다.
밑에 ( 괄호부터는 필드 명을 적어주는데, char(4000)적은거는, 따로 적어주지 않으면, 기본 default로 255자로 잡혀서 그 이상은 오류가 발생한다.
에러 "Field in data file exceeds maximum length" 가 생길때, 처리하기 위해서
char(4000) 최대값을 적어준거다. char 안적은거는 255로 잡힌다.
자 이제 ctl 파일은 준비가 되었다.
여러개를 입력해야하니, 그때마다 명령어를 쓰기 힘드니,
에디터를 열고, bat 파일을 만들어 준다.(예, test.bat)
sqlldr 디비접속정보 CONTROL= ctl파일명 LOG = 로그파일명
sqlldr db_user/db_password@db_ip CONTROL = log_info.ctl LOG= importlog.log
@뒤에 db_ip에는 tns에 세팅이 되어있으면, tns명을 넣어줘도 된다.
저장하고, 명령 프롬프트에서 bat를 실행하면 된다.
로더를 사용하면, 생각보다 속도도 빠르고, 잘못된 필드값 정리도 되서, 오히려 작업하는데 유용하다.
처음 세팅이 복잡해서 그렇지, 한번하면, 그 이후에는 빠르게 작업할 있다.
실행하면, 아래처럼 레코드 수가 뜨고, 작업양을 볼수 있다.
SQL*Loader: Release 11.1.0.6.0 - Production on 수 9월 15 20:23:47 2021
Copyright (c) 1982, 2007, Oracle. All rights reserved.
커밋 시점에 도달 - 논리 레코드 개수 18
커밋 시점에 도달 - 논리 레코드 개수 36
커밋 시점에 도달 - 논리 레코드 개수 54
커밋 시점에 도달 - 논리 레코드 개수 72
커밋 시점에 도달 - 논리 레코드 개수 90
커밋 시점에 도달 - 논리 레코드 개수 108
커밋 시점에 도달 - 논리 레코드 개수 126
커밋 시점에 도달 - 논리 레코드 개수 144
커밋 시점에 도달 - 논리 레코드 개수 162
커밋 시점에 도달 - 논리 레코드 개수 180
'컴퓨터 > Oracle' 카테고리의 다른 글
오라클 DB로더 사용법 (txt,csv파일 오라클DB 대량 업로드) (1) | 2024.04.04 |
---|---|
오라클 로더사용시 null값 넣기(null 에러) (0) | 2021.12.02 |
여러개 검색기능 만들때 DB 쿼리문 (0) | 2021.08.18 |
ORA-21561 : OID generation failed 오라클 에러 (0) | 2021.07.20 |
오라클 시간차이 계산하기 (0) | 2019.10.31 |