일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- patch
- mariaDB
- Oracle RAC
- oracle
- solaris network
- php5
- 연산자
- perl + 정규표현식
- command & perl
- bash
- rac
- SQL
- cygwin
- PERL
- RHEL4
- prompt
- solaris
- MySQL
- sqlplus
- Network
- dba
- perl one-liner
- 오라클
- fdisk
- perl string
- oracle install
- Linux
- Unix
- grid
- memory
- Today
- Total
목록Data Architecture/SQL Query (21)
DATA 전문가로 가는 길
보통 인터페이스에서 수신받은 데이터를 일괄적으로 테이블에 쌓는 작업을 많이 하게 되는데 그때 필요한 작업이 SQL Loader, 자바, C에서 로딩하는 여러 가지 방식이 있을 수 있습니다. 그러나 소스코딩이 많아서 업로딩 할 때 시간이 많이 들기 때문에 Oracle에서 추천하는 External Table을 이용하여 파일을 빠르게 로딩할 수 있습니다. 대량의 데이터를 업로딩 해보지 않았지만 500MB 파일을 로딩하는 데 큰 문제는 없었습니다. 다만, External Table -> 일반 적재 테이블 -> 서비스될 테이블 순으로 변경 절차가 많아진다는 단점은 보입니다. 그러나 DB 설계 시 표준화 작업을 제대로 했다면 위와 같은 일괄작업을 손쉽게 할 수 있습니다. 그럼 External Table(익스터널 테..
오라클 패키지를 분석하다보면 사용하고 있는 테이블이 무엇인지 알고 싶을 때가 많습니다. dba_dependencies 딕셔너리를 이용해서 확인 하셔도 되지만, 더 나아가서 패키지 안에 프로시저별로 테이블을 뽑고 싶을 때 사용하시면 됩니다. [ 쿼리 ]SELECT X.OWNER, X.NAME, X.TYPE, X.PROCEDURE_NAME, X.TABLE_NAME, X.LINE || ' ~ ' || X.LINE_NEXT AS LINE, X.TEXT AS ORG_PROCEDURE_NAME FROM (SELECT A.*, Trim(Regexp_substr(A.TEXT, '(PROCEDURE\s+)(.+)(\()', --> subexpressions ? ??? ??? 1, --> ???? 1, --> ???? '..
오라클에서 누적 곱을 구하는 방법을 아래와 같이 정리했습니다. 첫번 째 : NULL 존재할 경우 무조건 누적 값을 계산 한다. 두번 째 : NULL 존재할 경우 누적 곱을 새로이 계산 한다. LN : LN 함수는 입력값의 자연 로그 값으로 반환하며, 0보다 큰 값이 나타낸다. SUM : 함계를 계산한다. EXP : 누적 곱을 계산한다. 1. NULL 존재할 경우 무조건 누적 값을 계산 WITH T AS (SELECT '20130503' TRD_DT,1 RT FROM DUAL UNION ALL SELECT '20130504' TRD_DT,NULL RT FROM DUAL UNION ALL SELECT '20130505' TRD_DT,1 RT FROM DUAL UNION ALL SELECT '20130506'..
데이터를 이관하다 보면 여러 가지 방법이 있습니다. 그중에서 SQL*Loader를 이용해서 올리는 방법을 쓰기도 합니다. 요즘에는 툴이 좋아져서 데이터를 DB에 바로 적재 할 수 있습니다. 그렇지 않을 경우에는 약간 수작업을 통해서 데이터를 적재해야 해야 합니다. 그러한 반복 적인 작업을 줄이고자 스크립트를 만들어 봤습니다. SQL*Loader 사용법 : 바로가기SQL*Loader 기술문서 : 바로가기 1. 자동 생성 PL/SQLDECLARE V_OWNER VARCHAR2(30); V_TABLE_NM VARCHAR2(30); V_REPLACE_CHECK NUMBER(2); BEGIN V_OWNER := 'ESTENPARK'; -- 스키마 명 V_TABLE_NM := 'ISTD001NT'; -- TABLE..
/* Oracle의 SYS_OP_MAP_NONMULL 함수는 비공식적인 함수지만 가끔 유용하게 사용할 수 있습니다. NULL 값끼리 '=' 비교(NULL = NULL)하면 FALSE 지만 TRUE가 되도록 처리해야 하는 경우가 있고, 그럴 때 이 함수를 사용하면 됩니다. A : NULL B : NOT NULL C : NULL */ SELECT A.* ,-- 일반 조건절로 대입했을 경우 CASE WHEN A = B THEN 'TRUE' -- NULL = NOT NULL = FALSE ELSE 'FALSE' END COL1 ,CASE WHEN A = C THEN 'TRUE' -- NULL = NULL = FALSE ELSE 'FALSE' END COL2 ,-- SYS_OP_MAP_NONNULL 비공식 함수 ..