본문 바로가기

DataBase

SQL* Loader 사용법 개발을 하다보면 대용량의 데이터를 handling 해야 하는 경우가 종종 있다. 나도 그렇게 많은 데이터를 다뤄보진 않았지만 1억건 정도의 데이터를 다뤘던 경험이 있다. 이런 큰 데이터는 한번 update를 하기만 해도 몇일씩 걸리는 경우가 허다했기 때문에 무척애를 먹었다. 배치 작업을 돌릴때, 타 시스템 에서 데이터 파일을 interface 받아서 테이블에 올려야 할 경우 빠른 속도로 데이터를 올릴 수 있는 방법으로 SQL* Loader를 사용 했었다. 그 사용법에 대해서 알아보자. SQL*LOADER =========================== - 외부 파일의 데이타 를 ORACLE 데이터베이스의 테이블에 넣는 유틸리티. - SQL*Loader를 사용하려면 외부 데이터화일과 콘트롤 파일이 필요함.. 더보기
SQL Loader 사용법 1.삽입할 DATA의 준비 "," 형식으로 뽑던지 TAB으로 구분되는 형식으로 뽑던지 알아서 한다. 파워빌더로 TAB형식으로 뽑을 수 있음 2.CTL파일의 작성 파일이름.ctl 을 아래와 같이 작성한다. LOAD DATA INFILE '부어넣을 데이터파일이름' APPEND INTO TABLE POST FIELDS TERMINATED BY X'09' TRAILING NULLCOLS (칼럼이름목록) 만약 ","형식으로 분리할 경우에는 위의 X'09' TRAILING NULLCOLS 대신 "," 를 넣어준다. 칼럼이름목록 의 입력 예 code,codenm,codenm2 예를 들어 post.txt란 TAB으로 구분되는 형식의 데이터 파일을 post라는 테이블에 넣는 다면 소스는 다음과 같다. LOAD DATA .. 더보기
분석함수의 사용 분석함수의 사용 =============== 분석함수는 8i 버전에서 persnal edition, enterprise edition에서 지원하고, 9i버전에서는 모든 버전에 지원된다. 문법은 다음과 같다. SELECT Analytic_Function ( arguments ) OVER( [ PARTITION BY 칼럼 ] [ ORDER BY 절 ] [ Windowing 절] ) FROM 테이블 명; - Partition By : 전체 집합을 기준에 의해 소그룹으로 나눔 - Order By : PARTITION BY에 나열된 그룹을 정렬함 - Windowing : 펑션의 대상이 되는 행 기준으로 범위를 세밀하게 조정 (메뉴얼: window IS a physical or logical SET of rows).. 더보기
[Oracle]ora-00054: 자원이 사용중이고, NOWAIT가 지정되어 있습니다 해결 방법 아래내용은 오라클 Bulletin 에 있는 내용입니다. ==================================================== ORA-54 WHEN DROP A TABLE(LOCK SESSION KILL) Bulletin no : 10060 ===================================================== ORA-54 WHEN DROP A TABLE(LOCK SESSION KILL) TABLE에 LOCK이 걸려 있어 DML 및 DDL 명령 사용 시 ORA-54 ERROR가 나오는 경우가 있다. 00054, 00000, "resource busy and acquire with NOWAIT specified" // *Cause: Resource.. 더보기
ORA-01786: FOR UPDATE 구는 사용할 수 없습니다 실행 쿼리 select max(nvl(SEQ_NO,0)) SEQ_NO from LAC_COLLATERAL_INOUT where COLLATERAL_NO = '801187336900' and BRANCH_ID = '8011' for update nowait Caused by: java.sql.SQLException: ORA-01786: FOR UPDATE 구는 사용할 수 없습니다 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) at oracle.jdbc.driver.T4CTTIoer.processErr.. 더보기
MySQL 사용하기 내용은 초기 인스톨후 root 사용자 암호 설정방법과 DB사용자 등록및 권한설정, 데이타베이스 생성 방법, 기본 사용법 입니다. ####################################### # # # MySQL 설치후 기본적인 사용법과 # # root의 암호설정 # # # ####################################### 1. MySQL 사용하기 1.1 MySQL 서버 시작하기 MySQL이 정상적으로 설치 되었다면 그리고 디폴트 옵션으로 설치 하였다면 /usr/local/bin/ 디렉토리에 관련 실행 파일이 설치 되었을 것이다. 먼저 MySQL 서버를 실행하는 명령은 다음과 같다. 물론 root 아이디로 실행해야 한다. mysql.server start 위와 같이 입력하면.. 더보기
오라클 8080포트 변경 1. Configuration and Migration Tools -> Database configuration assistant 실행 2. 데이터베이스의 데이터베이스 옵션구성 선택 3. DB 선택 4. 데이터베이스 기능창 -- >표준데이터베이스 기능 --> 사용자정의 버튼 5. Oracle XML DB 창에서 포트번호 바꾸고 확인버튼 이렇게 하면 된다. 추가) 포트를 아예 안쓰고 싶다면 5번 단계에서 'XML 프로토콜 비활성화'를 체크 추가) 포트를 아예 안써도 톰켓으로 8080포트를 사용할수 없습니다. 그니까 5번까지만 하시고 톰켓 사용하면 된다. 이 글은 cafe.naver.com/role에서 발췌, 수정 하였습니다. 더보기
오라클 에러메세지 00000,0, "성공적인 정상 종료입니다" 00001,0, "유일성 제약조건(%s.%s)에 위배됩니다" 00017,0, "트레이스 이벤트 설정이 세션에 요구되었습니다" 00018,0, "최대 세션 수를 초과했습니다" 00019,0, "최대 세션 라이선스 수를 초과했습니다" 00020,0, "최대 프로세스 수(%s)를 초과했습니다" 00021,0, "세션이 다른 프로세스에 첨부되어 있음; 세션을 변경할 수 없습니다" 00022,0, "부적절한 세션 번호; 액세스가 거절되었습니다" 00023,0, "세션이 프로세스 고유의 메모리를 참조함; 세션을 분리할 수 없습니다" 00024,0, "단일 프로세스 모드에서는 하나 이상의 프로세스가 로그인할 수 없습니다" 00025,0, "%s에 메모리를 할당하는데 실패했.. 더보기
DBMS에 따른 날짜포맷 변환 DBMS에 따른 날짜포맷 변환 Oracle - MS SQL - DB2 UDB 의 서로 다른 날짜 형식을 맞추기위한 SQL문 DBMS 별 시간, 날짜 조회 쿼리 Oracle select sysdate from dual; 날짜+시분초 까지 조회가능 select current_timestamp from dual; 날짜+밀리초+시간존 까지 조회 MS SQL select getdate() 날짜 + 밀리초 단위까지 조회가능 DB2 UDB select current timestamp from sysibm.sysdummy1 날짜+밀리초까지 조회 가능 select current date from sysibm.sysdummy1 날짜만 조회 select current time from sysibm.sysdummy1 밀리초 .. 더보기
[오라클]Excel 파일에 숫자로 된 문자열 쓰기 Excel 파일에 숫자로 된 문자열 쓰기 엑셀 파일에 '00001' 이라는 문자를 쓰게 되면 '1'로 되어 버립니다. 의도했던 '00001' 이라는 문자는 사라지고 '1'이 써져 있다면 황당 하겠죠^^ 아래에 이를 해결하는 예가 있으니 참고 바랍니다. =========================================== declare in_file Text_IO.File_Type; linebuf VARCHAR2(1800); filename VARCHAR2(30); var_dir_dde pls_integer; BEGIN filename:='c:\'||:bloque1.tei_archivo||'.xls'; in_file := Text_IO.Fopen(filename, 'w'); linebuf := '.. 더보기