2012-03-24 3 views
1

프로덕션 데이터베이스 inOracle 11g - 전체 스키마가 있습니다. 관계를 유지하면서 테스트 데이터 (모든 값이 왜곡 ​​된)를 생성하려면 어떻게해야합니까? (예 : 문자열 값만 ids 또는 숫자가 깨지지 않습니다.) 데이터 생성기처럼이를 수행 할 수있는 도구가 있거나 수동으로 쉽게이 작업을 수행 할 수 있습니까?오라클의 실제 원본 데이터베이스에서 테스트 데이터를 생성하는 방법 11g

답변

0

간단한 SQL 쿼리를 사용하여 데이터를 생성합니다. 예를 들어 아래의 쿼리를 고려하십시오.

SELECT 'ORACLE' || ROWNUM ID, 
     DEPT_CD, 
     ACCT_NO, 
     TITLE, 
     NO_OF_SUBORDN, 
     ANNUAL_SALARY, 
     CUBICLE_ID, 
     DATE_OF_JOINING, 
     V_CCY_CODE 
    FROM (SELECT TRUNC(DBMS_RANDOM.VALUE(100, 1000)) DEPT_CD, 
       TRUNC(DBMS_RANDOM.VALUE(0, 20)) NO_OF_SUBORDN, 
       TRUNC(DBMS_RANDOM.VALUE(20000, 200000), 2) ANNUAL_SALARY, 
       DBMS_RANDOM.STRING('U', 10) || '/' || 
       TRUNC(DBMS_RANDOM.VALUE(100, 1000)) CUBICLE_ID, 
       SYSDATE + DBMS_RANDOM.VALUE(-365 * 15, -1) DATE_OF_JOINING 
      FROM DUAL 
     CONNECT BY LEVEL <= 100) TBL1 
    LEFT OUTER JOIN (SELECT DISTINCT V_CCY_CODE 
        FROM DIM_CURRENCY 
        ORDER BY DBMS_RANDOM.VALUE) TBL2 ON 1 = 1 
    LEFT OUTER JOIN (SELECT DISTINCT ACCT_NO, TITLE 
        FROM DIM_ACCOUNT 
        ORDER BY DBMS_RANDOM.VALUE) TBL3 ON 1 = 1 
ORDER BY DBMS_RANDOM.VALUE; 

이 쿼리에서 TBL1의 DBMS_RANDOM 패키지를 사용하여 임의의 데이터가 생성됩니다. TBL2 및 TBL3에서와 같이 디멘션 테이블 또는 룩업 테이블의 데이터를 데카르트 조인을 사용하여 가져올 수 있습니다.

참고 : 다른 테이블과 함께 데카르트 조인이 이루어 지므로 결과 데이터 세트가 커질 수 있으므로 TBL1의 LEVEL을 최소로 유지하십시오.