본문 바로가기
Tool활용

[SQL Developer] 텍스트 파일을 DB에 입력하기

by 황금웃음만두 2020. 1. 5.

 

 

텍스트 파일(CSV, TSV, XLSX, XLS)를 SQL Developer를 사용하여 DB에 테이블을 생성하고

 

데이터를 입력하는 방법을 소개하고자 합니다

 

 

텍스트 데이터를 DB에 입력하는 두가지 방법이 있습니다

 

 1) 데이터를 입력할 이미 테이블이 존재하는 경우

 2) 데이터를 입력할 테이블이 존재하지 않는경우

 

1)에 경우는 테이블 데이터 형식에 맞게 텍스트 데이터를 조정하여 데이터를 임포트 시키면 되지만

 

2)는 테이블 생성 DDL문을 작성해야 합니다.

 

아래 설명은 2)에 대한 내용입니다

 

 

 

 

설명에서 사용하는 텍스트 파일은 농림축산식품 공공데이터를 활용하였습니다

 

옆 링크에서 원천조사가격정보_201601.zip 파일을 사용하였습니다

 

 

CSV파일을 열어보니

데이터 행은 헤더를 제외한 75,597행이며, 다음과 같은 항목들을 관리합니다

 

조사일자
조사구분코드
조사구분명
표준품목코드
표준품목명
조사가격품목코드
조사가격품목명
표준품종코드
표준품종명
조사가격품종코드
조사가격품종명
조사등급코드
조사등급명
표준단위코드
표준단위명
조사단위명
당일조사가격
전일조사가격
조사지역코드
조사지역명
표준시장코드
표준시장명
조사가격시장코드
조사가격시장명

 

 

 

위 파일을 데이터베이스에 입력해보도록 하겠습니다

 

SQL Developer를 실행하여 아래화면과 같이 왼쪽 패널에서 "테이블(필터링됨)" 에 오른쪽마우스를 클릭하면

데이터 임포트라는 매뉴가 있습니다. 클릭합니다

 

 

 

데이터 임포트 마법사가 실행되며 임포트할 파일을 선택하고 다음을 클릭합니다

 

 

다음 단계에서 테이블 이름을 데이터베이스에서 오류가 발생하도록 긴 한글명 이름으로 부여하고, 다음을 누릅니다.

저는 데이터 임포트용테이블DDL문이라는 테이블이름으로 부여 했습니다

 

다음을 누룹니다

 

엑셀의 1번 행을 읽어 프로그램이 칼럼을 정의한 내역입니다

이 내역은 프로그램 임의로 생성하였기 때문에 그대로 사용하기에 무리가 있습니다

수정 없이 다음을 클릭합니다

 

다음을 클릭합니다

 

 

위 단계에서 테이블명을 DB에서 생성할 수없는 이름으로 부여하여 오류가 발생하였습니다.

 

오류 후 임포트마법사에서 정의한 DDL문을 보여주는데 이를 활용하여 테이블을 생성할 것입니다

 

 

 

프로그램이 생성해 준 DDL문으로 본인이 활용가능한 데이터형을 재부여하여 정의하도록 합니다

 

여기서 주의해야할 점은 위 임포트 마법사에서 파일을 읽을 때 100행만 우선 읽어 데이터형을 정의한 것이므로

100행을 넘어 데이터에 대한 데이터 길이, 데이터형은 체크하지 않습니다. 

 

또한 한글의 경우 DBMS마다 2바이트 3바이트 등 처리방식이 다르므로 임포트마법사에서 정의한 한글데이터가 들어간 칼럼 길이를 3배로 재정의해주어야 임포트시 길이로 인한 오류가능성을 최소화할 수 있습니다

 

제대로된 칼럼 데이터타입/길이를 정의해주고 싶을 경우, 데이터를 정의할 때 모든 칼럼(숫자,문자,날짜 상관없이) VARCHAR2(4000)의 최대 길이로 정의 한 후 데이터를 입력하여 길의의 MAX, IS_NUMBER , IS_DATE 등을 활용하여 제대로 정의하는것이 좋습니다

 

 

 

저는 아래와같이 DDL문을 정의하였습니다

CREATE TABLE EXER_NONGSUSAN_PRICE ( 
  조사일자 VARCHAR2(100),
  조사구분코드 VARCHAR2(100),
  조사구분명 VARCHAR2(100),
  표준품목코드 VARCHAR2(100),
  표준품목명 VARCHAR2(100),
  조사가격품목코드 VARCHAR2(100),
  조사가격품목명 VARCHAR2(100),
  표준품종코드 VARCHAR2(100),
  표준품종명 VARCHAR2(100),
  조사가격품종코드 VARCHAR2(100),
  조사가격품종명 VARCHAR2(100),
  조사등급코드 VARCHAR2(100),
  조사등급명 VARCHAR2(100),
  표준단위코드 VARCHAR2(100),
  표준단위명 VARCHAR2(100),
  조사단위명 VARCHAR2(100),
  당일조사가격 NUMBER(38),
  전일조사가격 NUMBER(38),
  조사지역코드 VARCHAR2(100),
  조사지역명 VARCHAR2(100),
  표준시장코드 VARCHAR2(100),
  표준시장명 VARCHAR2(100),
  조사가격시장코드 VARCHAR2(100),
  조사가격시장명 VARCHAR2(100)) 

 

 

테이블을 생성하였으므로 이번에는 생성된 테이블명에 오른쪽 마우스를 클릭하여 데이터 임포트를 클릭합니다

 

 

다음을 클릭합니다

 

다음을 클릭합니다

 

다음을 클릭합니다

다음을 클릭합니다

 

테이블에 데이터를 입력시킵니다

 

 

완료되었다면 커밋하였다고 메시지가 나오며, 만약 완료되지 않고 데이터 길이 등으로 인하여 오류가 발생을 한다면

재작업이 필요합니다.

 

 

 

테이블을 SELECT 하여 테이블에 데이터가 입력된 것을 확인합니다

 

 

 

입력된 데이터 행 수가 파일데이터와 동일한지 검증합니다

 

파일데이터는 75,597 건이므로 누락된 행 없이 모두 입력된 것을 확인되었습니다.

 

데이터를 임포트할 때는 검증과정도 필요하므로 번거롭더라도 꼭 수행하여야 합니다.

 

 

 

 

 

이상으로 포스팅을 마칩니다

댓글