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;