ctl 파일을 이용해서 oracle테이블에 csv 파일 import하기 (linux 환경)
우선 linux환경에서 oracle에 접근하는것은 oracle 계정으로 실행해야 oracle 환경변수를 모두 사용할 수 있다.
오라클 테이블에 import시킬때
1. ctl파일을 만들어서 import
2. cli환경에서 하나하나 입력
1 번 방법이 직관적이다 싶어서 1번 방법으로 했던 내용을 정리하고자 한다.
① import.ctl 파일을 생성한다.
load data
INFILE '/home/oracle/temp/file.csv'
APPEND
INTO TABLE tbl_name
FIELDS TERMINATED BY ','
optionally enclosed by '"'
(col1, col2, col3, col4)
이 외에 더 많은 방법이 있으니 추가 해도 좋을듯 하다 하지만 난 간단하게!! 입력만 해도 돼서..ㅎㅎ
위의 내용을 import.ctl 파일에 입력한다.
INFILE : 'import할 데이터의 csv'
INTO TABLE : import할 테이블명
FIELDS TERMINATED BY ',' : ,로 구분자로 되어있는 데이터다
OPTIONALLY ENCLOSED BY '"' : ,로 구분되어있는 데이터지만 하나의 컬럼당 " "로 구분되어있다.
- ex) ---- "컬럼1데이터","컬럼2데이터","컬럼3데이터","컬럼4데이터" ----
- 이때 위의 내용을 입력하고 나니 ()괄호안에 데이터를 구분해줘야 했다.
② sqlldr 명령을 이용해서 해당 내용을 import시켜준다.
$ sqlldr userid=userid/pw control='import.ctl'
sqlldr만 치게 되면 어떻게 해야하는지 정보가 나오는데
userid/pw 만 입력해도 된다고 한다.
하지만 나는 계속 로그인 정보가 맞지 않다는 내용이 계속 나왔고
원인을 알수 없었다.
구글링 했을때 사람들은 다들 sid를 입력하라고 하는데 나는 sid를 이용해서 만들어진 디비가 아니었고
service 이름이 주어진 환경이었다
이때 설마 하며 서버 돌릴때 사용하는 url을 입력해봤는데 이렇게 하니까 드디어 로그인이 되는게 아닌가....
즉 우리는 connection name이 orclpdb이기 때문에 이걸 넣어줘야했는데
이래서 로그인할때 세션을 만들수 없다고 로그인을 할 수 없었던 것이다.
$ sqlldr useid=userid/pw@127.0.0.1:1521/orclpdb control='import.ctl'
이라고 하니 정상적으로 로그인되고 바로 import가 되었다.
그리고 오라클에서는 mysql과는 다른점이 sqlldr 로 명령어를 치니 로그가 따로 생겼다.
mysql 은 내가 로그를 만들어야 했는데 경과시간, cpu사용시간, 몇개의 파일을 import성공했는지 등의
실질적인 로그가 import.ctl -> import.log라는 파일로 생기니 참고하면 좋을듯하다.
'개발일지' 카테고리의 다른 글
[linux] 리눅스 명령어 급하게 찾을때 (0) | 2020.09.09 |
---|---|
[linux] signal kill (0) | 2020.08.11 |
[docker] docker commit image (0) | 2020.05.19 |
[docker] docker 이미지 지우기 (0) | 2020.04.30 |
[docker] docker hub의 push가 안되는 현상 (0) | 2020.04.09 |