PostgreSQL - Генерация тестовых данных
- Последнее обновление: 3 Ноября 2023 г.
- Просмотры: 2034
- Автор: Админ
Коллеги всем привет.
В сегодняшней статье мы поговорим о том как можно сгенерировать тестовые данные в СУБД PostgreSQL.
Иногда бывают случаи в роботе администратора баз данных или разработчика приложений это когда нужно проверить производительность базы данных, но когда в таблице всего 10 строк то производительность проверить не получится. Чтобы решить данную задачу, нам нужно где-то взять тестовые данные. Конечно мы можем сделать какой-нибудь скрипт на любом языке программирования который будет генерировать данные и вставлять эти данные в таблицы, но это не лучшее решения. К примеру нам нужно сгенерировать 10 миллионов строк, и если мы будем использовать скрипт то наша память сервера такой подход не примет, потому что 10 миллионов строк нам нужно подгрузить в оперативную память.
Чтобы решить нашу проблемы, нам может помочь сам PostgreSQL, а точнее его встроенные функции.
Первым делом мы создадим тестовую базу данных в которую мы будем генерировать тестовые данных, база данных будет называться test_random_data.
psql> CREATE DATABASE test_random_data;
Следующим действием создадим таблицу в нашей новой созданной базе данных под названием random_number.
psql> CREATE TABLE random_number (id INT, age INT);
Теперь настала очередь генерировать данные. Генерировать данные будем с использованием двоих встроенных функций: generate_series() и random().
Функция generate_series() это встроенная функция в PostgreSQL которая упрощает создание упорядоченных чисел. Функция принимает как минимум два обязательных параметра для указания параметров запуска и остановки для сгенерированных данных.
Простой пример использования функции:
psql> SELECT generate_series(1,10);
Из примера видно нам видно, что функция generate_series() возвращает последовательные числа между начальным и конечным параметрами. При использовании этой функции числовых данных будут увеличиваться на 1.
Вторую функцию которую мы будем использовать называется random(). Функция генерирует случайное число с плавающей запятой от 0 до 1.
Простой пример использования функции:
psql> SELECT random();
Теперь давайте используем эти две функции вместе и вставим 1000 строк с некоторыми случайными данными в таблицу которую мы создали.
psql> INSERT INTO random_number (id, age) VALUES (generate_series(1, 1000), trunc(random()*10 * 2));
Как видим в результате данные успешно генерируются.
Таким же способом мы можем генерировать миллионы строк.
Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.