1

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

4

2 回答 2

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 保持在最低限度,因为正在与其他表进行笛卡尔连接,因此结果数据集将是巨大的。

于 2013-12-18T07:54:57.967 回答
0

请参阅 http://docs.oracle.com/cd/B10500_01/appdev.920/a96612/d_obtoo2.htm http://www.oracle.com/us/products/database/data-masking-best-practices-161213。 PDF http://test.techwell.com/sites/default/files/articles/XUS304776788file1_0.pdf

于 2012-04-04T19:44:06.843 回答