만들어가는 세상

[ORACLE] INSERT&SELECT, ROWNUM을 통한 INSERT, 정규식을 이용한 특정 태그 제거, varchar2 clob 타입변경시 등 처리 본문

IT/ETC

[ORACLE] INSERT&SELECT, ROWNUM을 통한 INSERT, 정규식을 이용한 특정 태그 제거, varchar2 clob 타입변경시 등 처리

윤재웅 2019. 11. 13. 00:21

INSERT&SELECT, ROWNUM을 통한 INSERT, 정규식을 이용한 특정 태그 제거, varchar2 clob 타입변경시 등 처리해보았습니다. 간혹 데이터베이스 유지보수 시 쓰일때가 있는것 같습니다.

INSERT&SELECT

INSERT INTO MULTIMEDIA
( IDX, CATEGORY, SUBJECT, CONTENT, THUMB_IMG_FILEPATH, THUMB_IMG_FILENAME, THUMB_IMG_FILESIZE, VIDEO_URL, VIDEO_SOURCE, DEL_YN, REG_DT, REG_ID, UPT_DT, UPT_ID, DEL_DT, DEL_ID, LAST_MOD_DT)
SELECT  SEQ_MULTIMEDIA.NEXTVAL, CATEGORY, SUBJECT, CONTENT, THUMB_IMG_FILEPATH, THUMB_IMG_FILENAME, THUMB_IMG_FILESIZE, VIDEO_URL, VIDEO_SOURCE, DEL_YN, REG_DT, REG_ID, UPT_DT, UPT_ID, DEL_DT, DEL_ID, LAST_MOD_DT FROM NEWS
WHERE CATEGORY = 'VIDEO'

ROWNUM을 통한 INSERT

INSERT INTO LOG (SEQ, PARAMETER, TYPE, REG_DATE, REG_USER_SEQ, PROJECT_SEQ, PROJECT_NAME)
SELECT ROWNUM+500, 'OR0001-'||DATA_NO, 'U', SYSDATE, 1, '671', '2016 방과후교육_방과후 교실' FROM DATA_BASIC_META
WHERE PROJECT_SEQ = '671';

정규식을 이용한 특정 태그 제거

SELECT REGEXP_REPLACE(ABSTRACT, '<sup[^>]*>', '') FROM VOLUME_DTL
SELECT  REGEXP_REPLACE(ABSTRACT, '(ms-local-[^>]*)', '') FROM VOLUME_DTL

UPDATE VOLUME_DTL SET
ABSTRACT = REGEXP_REPLACE(ABSTRACT, '(ms-local-[^>]*)', '')

//오라클 - 함수와 정규식을 이용한 HTML 태그 제거
SELECT REGEXP_REPLACE(column, '<[^>]*>|\&([^;])*;', '')  FROM dual
ibatis사용시 : REGEXP_REPLACE(cont, <![CDATA['<[^>]*>|\&([^;])*;']]> 

varchar2 clob 타입변경시

//새 CLOB 컬럼을 추가합니다. 
ALTER TABLE MANUSCRIPT ADD (TMP_CONTENTS CLOB);

//데이터를 복사합니다.
UPDATE MANUSCRIPT SET 
TMP_CONTENTS = ABSTRAC;

UPDATE MANUSCRIPT SET ABSTRAC = NULL;
//기존 컬럼을 LONG 타입으로 변환합니다. 
ALTER TABLE MANUSCRIPT MODIFY (ABSTRAC LONG);
ALTER TABLE MANUSCRIPT MODIFY (ABSTRAC CLOB);

UPDATE MANUSCRIPT SET ABSTRAC = TMP_CONTENTS; 

UPDATE MANUSCRIPT SET TMP_CONTENTS = NULL;

ALTER TABLE MANUSCRIPT DROP COLUMN TMP_CONTENTS;
Comments