在oracle 11g中从真实源数据库生成测试数据的方法

时间:2012-03-24 01:00:53

标签: oracle test-data data-generation

我在Oracle 11g中有生产数据库 - 整个架构。 如何使用它来生成维护关系的测试数据(所有值乱码)(例如,只有字符串值乱码而不是ID或数字) 是否有像数据生成器那样的工具,或者我们可以轻松地手动执行此操作? 提前致谢

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分: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包生成随机数据。 可以使用笛卡尔连接引入DIM表或查找表中的数据,如TBL2和TBL3所示。

注意:将TBL1中的LEVEL保持在最小值,因为正在与其他表进行笛卡尔连接,因此得到的数据集将是巨大的。