DBILITY

독거 가능성 100% 노후에 라면값이라도 하게 센스를 발휘합시다!😅
Please click on the ad so that I can pay for ramen in my old age!
点击一下广告,让老后吃个泡面钱吧!
老後にラーメン代だけでもするように広告を一回クリックしてください。

oracle 오라클 테스트 데이터 생성 예제 본문

database/oracle

oracle 오라클 테스트 데이터 생성 예제

DBILITY 2017. 9. 30. 20:23
반응형

가끔 일정한 규칙없이 100만건 정도의 테스트 데이터가 필요할때 DBMS_RANDOM PACKAGE를 이용해 생성하는데 그 예입니다.

TOAD같은 상용툴이 아닌 DBEAVER에선 희안하게 BINDING에 약간 문제가 있어 PLAN보기가 어려울때, 아래와 같이 즉시 출력할 수 있습니다.
물론 파라메터별로 문자열인 경우 따옴표로 묶어주면 됩니다.

CREATE TABLE TB_SAMPLE_SOURCE UNRECOVERABLE AS
SELECT
	LEVEL AS SEQ,
	DECODE(ROUND( DBMS_RANDOM.VALUE( 1, 3 )),1,'USER',2,'COMPANY','ETC') AS DATA_TYPE,
	TO_TIMESTAMP(TO_CHAR(CURRENT_TIMESTAMP-NUMTODSINTERVAL(ROUND(DBMS_RANDOM.VALUE( 1, 1000000)),'SECOND'),'yyyy/MM/dd HH24:MI:SS.FF3')) AS REG_DATE,
	DBMS_RANDOM.STRING('U',20) A,
	DBMS_RANDOM.STRING('L',20) B,
	DBMS_RANDOM.STRING('A',20) C,
	DBMS_RANDOM.STRING('X',20) D,
	DBMS_RANDOM.STRING('P',120) E,
	ROUND(DBMS_RANDOM.VALUE( 1, 1000000)) F
FROM
	DUAL
CONNECT BY
	LEVEL <= 1000000;
	
CREATE INDEX TB_SAMPLE_SOURCE_IDX01 ON DEV.TB_SAMPLE_SOURCE (REG_DATE,DATA_TYPE) ;

EXPLAIN PLAN FOR SELECT  /*+ INDEX(A TB_SAMPLE_SOURCE_IDX01) */
	* 
FROM 
	TB_SAMPLE_SOURCE A
WHERE 
	REG_DATE 
	BETWEEN TO_TIMESTAMP(TO_CHAR(:START_DT),'YYYY-MM-DD HH24:MI:SS.FF3') 
	AND TO_TIMESTAMP(TO_CHAR(:END_DT),'YYYY-MM-DD HH24:MI:SS.FF3')
	AND DATA_TYPE > ' ';
	
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

 

반응형

'database > oracle' 카테고리의 다른 글

ROWID 구조  (0) 2018.03.22
오라클 SQL 썸머타임(일광절약시간) 테스트  (0) 2017.12.17
계정생성..  (0) 2017.08.29
oracle CTAS NOLOGGING  (0) 2017.07.04
oracle os file delete ( 오라클에서 os상 file 삭제 )  (0) 2017.06.28
Comments