본문 바로가기

[DATABASE] ORACLE/SQL Programing8

[Oracle] 개행 문자열 처리 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 -- #################################################### -- SQLPLUS 개행문자 처리 -- #################################################### -- SQLPLUS 에서 개행문자열 Insert 수행 시 오류 발생 (공백라인 에러) -- 소스 데이터에서 개행문자열[CHR(10)]을 Replace 수행 SELECT C1 , ''''||REPLACE(C1,CHR(10),'''||CHR(10)||''')||'''' , INSTR(C1,CHR(10)) FROM T10 ; -- 변환된 개행문자열 INSERT INTO T10 VALU.. 2022. 8. 30.
[Oracle] Parallel DML (Insert) Oracle Parallel Insert 처리시 참고 1 2 3 4 5 6 7 8 ALTER SESSION FORCE PARALLEL DML PARALLEL 4; ALTER SESSION FORCE PARALLEL QUERY PARALLEL 4; INSERT /*+ ENABLE_PARALLEL_DML APPEND FULL(A) PARALLEL(A 4) */ INTO SAMPLE_T1 A SELECT /*+ FULL(B) PARALLEL(B 4) */ * FROM SAMPLE_T B ; COMMIT; Colored by Color Scripter cs 1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE ITEMS_20221020 AS SELECT * FROM ITEMS WHERE 1 = 2;.. 2022. 6. 28.
[Oracle] Bulk Insert Oracle 대용량 데이터 생성 샘플 - Bulk Insert 방식 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 -- ######################## -- 1. 테이블 생성 -- ######################## drop table sample_t purge; create table sample_t ( id1 number, -- i 값을 넣는 컬럼 id2 number, -- i 값과 랜덤값을 같이 넣어서 중복이 발생하지 않게 하는 컬럼 name varchar2(10), -- data 생성.. 2022. 6. 28.
Convert Systemdate 1. SYSTEMDATE를 날짜로 변환(CONVERT SYSTEMDATE TO DATE) 2. DATE를 SYSTEMDATE로 변환(CONVERT DATE TO SYSTEMDATE) 1 2 3 4 5 6 7 8 9 -- SYSTEMDATE 날짜로 변환(CONVERT SYSTEMDATE TO DATE) SELECT TO_CHAR(TO_TIMESTAMP('1970-01-01 09:00:00.0','YYYY-MM-DD HH24:MI:SS.FF3') + NUMTODSINTERVAL(1655254800000/1000, 'SECOND') ,'YYYY-MM-DD HH24:MI:SS') FROM DUAL ; -- DATE 날짜로 변환(CONVERT DATE TO SYSTEMDATE) SELECT (CAST(SYS_EX.. 2022. 6. 15.
중복 데이터 삭제 오라클 중복 데이터 삭제 방법 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 32 33 DROP TABLE T1; CREATE TABLE T1 (C1 NUMBER, C2 VARCHAR2(100)); INSERT INTO T1 VALUES (1,'유재석'); INSERT INTO T1 VALUES (2,'정현돈'); INSERT INTO T1 VALUES (3,'박명수'); COMMIT; -- 중복데이터 삽입 INSERT INTO T1 VALUES (1,'노홍철'); COMMIT; SELECT * FROM T1; -- 방법 (1). MIN(ROWID) 보다 큰건은 삭제(신규 추가된건 삭제) DELETE .. 2022. 1. 13.
오라클 행열 전환(2) - 열을 행으로 전환 '|' 로 구분된 문자열을 행으로 전환 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 WITH TABLE_LIST AS ( SELECT level , cnt , data AS source_data , REPLACE(SUBSTR(data,INSTR(data,'|',1,LEVEL),DECODE(INSTR(data,'|',1,LEVEL+1),0,30,INSTR(data,'|',1,LEVEL+1) - INSTR(data,'|',1,LEVEL))),'|') AS coltorow_val FROM ( SELECT data , LENGTH(data) - LENGTH(REPLACE(data,'|')) cnt FROM (SELECT REPLACE('|유재석 |박명수 |정현돈 |정준하 |노홍철'.. 2022. 1. 13.
오라클 SQL 실습 사이트 DBMS 설치가 필요없고, 무료로 사용이 가능한 오라클 SQL 실습 사이트 오라클 회원가입 - 로그인 - 첫화면(View Scripts and Tutorials) 선택 - 샘플선택(EMP and DEPT) - Run Script - 좌측메뉴 - SQL Worksheet 에서 SQL 실습 진행 https://livesql.oracle.com/ Oracle Live SQL 1,053,288 scripts, 4,301 likes, 1,050 public scripts, 4,694 new scripts created in the last 7 days. livesql.oracle.com 난 회원가입도 싫다? https://sqltest.net/ 2022. 1. 7.
오라클 행열 전환(1) - LISTAGG 행 데이터를 열 데이터로 전환 1 SELECT empno, ename, job, sal FROM emp; cs EMPNO ENAME JOB SAL 7839 KING PRESIDENT 5000 7698 BLAKE MANAGER 2850 7782 CLARK MANAGER 2450 7566 JONES MANAGER 2975 7788 SCOTT ANALYST 3000 7902 FORD ANALYST 3000 7369 SMITH CLERK 800 7499 ALLEN SALESMAN 1600 7521 WARD SALESMAN 1250 7654 MARTIN SALESMAN 1250 7844 TURNER SALESMAN 1500 7876 ADAMS CLERK 1100 7900 JAMES CLERK 950 7934 MI.. 2022. 1. 7.