Генерация тестовых данных в Oracle

Наиболее простым методом генерации тестовых данных в Oracle, является метод комбинирования запросов на основе CONNECT BY LEVEL и пакета DBMS_RANDOM. При помощи запроса мы легко можем генерировать необходимое количество строк, а с используя пакет DBMS_RANDOM, добавить необходимое наполнение полей. Простейшим запросом в этом случае будет такой:

SELECT LEVEL AS ID,
       dbms_random.String('X', 10) AS NAME
FROM dual CONNECT BY LEVEL < 10;

Выводим 9 строк, с двумя полями:
ID NAME
— —
1 4txer6oa9h
2 sppv4klnh1
3 oz33rs9fsy
4 0dl8azesaq
5 gc33xxnm2g
6 4i5hmvm6uj
7 5oovp3o4oe
8 a10k5lwrqt
9 9eyxgm98f5

Регулируя значения LEVEL, добиваемся необходимого количества строк. В данном случае, LEVEL так же выступает уникальным идентификатором записи, потому как имеет уникальное значения и может быть использован вместо sequece.
Количество полей, которое необходимо вставить, регулируем подстановкой вызовов необходимого метода DBMS_RANDOM. Наиболее полезные и востребованные методы пакета и примеры их использования:

SELECT dbms_random.value(),
       -- случайное число, больше или равно 0 и меньше чем 1

       dbms_random.value(1,5),
       -- случайное число, в заданой границе

       dbms_random.normal(),
       -- случайное число, как пололожительное так и отрицательное

       dbms_random.random(),
       -- устаревшая функция, не рекомендуется использовать

       dbms_random.string('x',10),
       -- случайная строка, как с буквами так и с цифрами

       trunc(SYSDATE,'yyyy') + dbms_random.value(1,360) 
       -- пример для генерации случайных дат
FROM dual;

Подробное использования пакета DBMS_RANDOM описано на сайте oracle в соответствующем разделе.

Оставьте комментарий