метод генерации тестовых данных из реальной базы данных в Oracle 11g - PullRequest
1 голос
/ 24 марта 2012

У меня есть производственная база данных в Oracle 11g - вся схема.Как я могу использовать это для генерации тестовых данных (все значения искажены) с сохраненными отношениями (например, искажены только строковые значения, а не идентификаторы или числа). Существует ли такой инструмент, как генератор данных, или мы можем легко сделать это вручную?Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 18 декабря 2013

Вы можете сделать это, используя простые запросы 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;

В этом запросе случайные данные генерируются с использованием пакета DBMS_RANDOM в TBL1.Данные из таблиц DIM или справочных таблиц могут быть введены с использованием декартового объединения, как показано в TBL2 и TBL3.

Примечание: сведите к минимуму УРОВЕНЬ в TBL1, поскольку с другими таблицами ипоэтому результирующий набор данных будет огромным.

...