database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 29358 게시물 읽기
No. 29358
sql*loader를 이용 엑셀 파일 대량 insert에관한..
작성자
hunt
작성일
2007-01-12 10:17
조회수
5,054


엑셀파일을 그대로 읽어서 sqlloader를 이용해서 한번에 insert를 시킬수 있는지요.

일단 엑셀 파일을 서버에 올려놓고 그파일을 자바로 읽어서 sqlloader를 이용 해서 insert시킬 계획인데요..

문제는 제가 초보라 sqlloader도모르고 서버에 파일 올리는것까지는 가능한데요.

jxl을 이용해서 읽는것 가능한데요 ..  그다음을 모르겠습니다. m.m;;

알려주시면 너무너무 감사하겠습니다..

이 글에 대한 댓글이 총 4건 있습니다.
sqlloader를 이용하신다면 엑셀파일을 읽을수는 없구요 탭 구분이나, comma 구분으로 파일 저장하셔서 서버에 올리고 control 파일 작성하셔서 sqlldr 로 올리면 됩니다.
익명님이 2007-01-12 11:23에 작성한 댓글입니다. Edit

익명님이 말씀하신대로 그대로 읽을 수는 없습니다.
그러나 엑셀 파일을 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

ohyouknow님이 2007-01-12 12:38에 작성한 댓글입니다. Edit

윗분답변 감사드립니다^^

hunt님이 2007-01-12 13:08에 작성한 댓글입니다. Edit

대용량 이시라면... 흠..

오라클 버전이 어케 되시는지요? 9i 이상이라면... external table을 이용하시는 게 
sql loader 보다 몇 배 더 향상된 성능을 발휘하는 것이 가능합니다. 

또한 parallel 하게 load를 파일을 나누지 않고 한방에 처리 하는 것이 가능하기 때문에..
사용또한 성능 못지 않게 편리하구요...

사용해 보시길.. 권장 드립니다.

나그네님이 2007-01-13 11:12에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
29371fetch할때 에러가 발생합니다. [1]
송찬의
2007-01-12
5404
29367Proc*C 컴파일 문제 [1]
오상인
2007-01-12
3362
29366오라클 10.2.0.1.0에서 proc컴파일시 오류에 대한 조언 부탁드립니다.
이재희
2007-01-12
2692
29358sql*loader를 이용 엑셀 파일 대량 insert에관한.. [4]
hunt
2007-01-12
5054
29357여러 테이블의 데이터 수량을 알 수 있을까요? [1]
궁금
2007-01-12
1462
29356왕초보의 질문 [1]
황일섭
2007-01-12
1075
29355statspack 질문입니다. [급] [2]
김신애
2007-01-12
1484
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.029초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다