엑셀파일을 그대로 읽어서 sqlloader를 이용해서 한번에 insert를 시킬수 있는지요. 일단 엑셀 파일을 서버에 올려놓고 그파일을 자바로 읽어서 sqlloader를 이용 해서 insert시킬 계획인데요.. 문제는 제가 초보라 sqlloader도모르고 서버에 파일 올리는것까지는 가능한데요. jxl을 이용해서 읽는것 가능한데요 .. 그다음을 모르겠습니다. m.m;; 알려주시면 너무너무 감사하겠습니다..
익명님이 말씀하신대로 그대로 읽을 수는 없습니다. 그러나 엑셀 파일을 csv파일로 저장하셔서 서버에 올리시면 읽을 수 있습니다. 오라클 샘플 데이터인 emp테이블을 예로 들어 설명 하겠습니다. 아래에서 보시는 것처럼 엑셀데이터를 cvs로 저장하여 올리시면... emp.csv 처럼 보입니다. 이를 이용하기 위해 테이블 구조에 맞추어 EMP.ctl을 작성 하시고.... 실행 시켜 주심 됩니다. 이행 해야 할 데이터가 많다면... 스크립트를 미리 한방에 만들어 하심이 편하실겁니다. ==================================================================== SQL> desc emp Name Null? Type ------------------------------- -------- ---- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2)
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- -------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 19801217 800 20 7499 ALLEN SALESMAN 7698 19810220 1600 300 30 7521 WARD SALESMAN 7698 19810222 1250 500 30 7566 JONES MANAGER 7839 19810402 2975 20 7654 MARTIN SALESMAN 7698 19810928 1250 1400 30 7698 BLAKE MANAGER 7839 19810501 2850 30 7782 CLARK MANAGER 7839 19810609 2450 10 7788 SCOTT ANALYST 7566 19821209 3000 20 7839 KING PRESIDENT 19811117 5000 10 7844 TURNER SALESMAN 7698 19810908 1500 0 30 7876 ADAMS CLERK 7788 19830112 1100 20 7900 JAMES CLERK 7698 19811203 950 30 7902 FORD ANALYST 7566 19811203 3000 20 7934 MILLER CLERK 7782 19820123 1300 10 14 rows selected.
==================================================== EMP.ctl LOAD DATA INFILE 'emp.csv' INTO TABLE EMP FIELDS TERMINATED BY "," ( EMPNO , ENAME , JOB , MGR , HIREDATE , SAL , COMM , DEPTNO ) ==================================================== emp.csv 7369,SMITH ,CLERK ,7902,19801217,800, ,20 7499,ALLEN ,SALESMAN ,7698,19810220,1600,300,30 7521,WARD ,SALESMAN ,7698,19810222,1250,500,30 7566,JONES ,MANAGER ,7839,19810402,2975, ,20 7654,MARTIN,SALESMAN ,7698,19810928,1250,1400,30 7698,BLAKE ,MANAGER ,7839,19810501,2850, ,30 7782,CLARK ,MANAGER ,7839,19810609,2450, ,10 7788,SCOTT ,ANALYST ,7566,19821209,3000, ,20 7839,KING ,PRESIDENT, ,19811117,5000, ,10 7844,TURNER,SALESMAN ,7698,19810908,1500,0,30 7876,ADAMS ,CLERK ,7788,19830112,1100, ,20 7900,JAMES ,CLERK ,7698,19811203,950, ,30 7902,FORD ,ANALYST ,7566,19811203,3000, ,20 7934,MILLER,CLERK ,7782,19820123,1300, ,10 ==================================================== sqlldr 실행 sqlldr username/password control=EMP.ctl direct=true
윗분답변 감사드립니다^^
대용량 이시라면... 흠.. 오라클 버전이 어케 되시는지요? 9i 이상이라면... external table을 이용하시는 게 sql loader 보다 몇 배 더 향상된 성능을 발휘하는 것이 가능합니다. 또한 parallel 하게 load를 파일을 나누지 않고 한방에 처리 하는 것이 가능하기 때문에.. 사용또한 성능 못지 않게 편리하구요... 사용해 보시길.. 권장 드립니다.