PostgreSQL - Генерація тестових даних

PostgreSQL - Генерація тестових даних

Колеги всім привіт.

У сьогоднішній статті ми поговоримо про те, як можна згенерувати тестові дані в СУБД PostgreSQL.

Іноді бувають випадки в роботі адміністратора баз даних або розробника додатків це коли потрібно перевірити продуктивність бази даних, але коли в таблиці всього 10 рядків то продуктивність перевірити не вийде. Щоб вирішити це завдання, нам потрібно десь взяти тестові дані. Звичайно ми можемо зробити який-небудь скрипт на будь-якій мові програмування який буде генерувати дані і вставляти ці дані в таблиці, але це не найкраще рішення. Наприклад нам потрібно згенерувати 10 мільйонів рядків, і якщо ми будемо використовувати скрипт, то наша пам'ять сервера такий підхід не прийме, тому що 10 мільйонів рядків нам потрібно підвантажити в оперативну пам'ять.

Щоб вирішити нашу проблему, нам може допомогти сам PostgreSQL, а точніше його вбудовані функції.

 

Насамперед ми створимо тестову базу даних, в яку ми генеруватимемо тестові дані, база даних буде називатися test_random_data.

psql> CREATE DATABASE test_random_data;

test data generation


 

Наступною дією створимо таблицю в нашій новій створеній базі даних під назвою random_number.

psql> CREATE TABLE random_number (id INT, age INT);

test data generation


 

Тепер настала черга генерувати дані. Генерувати дані будемо з використанням двох вбудованих функцій: generate_series() та random().

Функція generate_series() це вбудована функція в PostgreSQL яка спрощує створення впорядкованих чисел. Функція приймає щонайменше два обов'язкові параметри для вказівки параметрів запуску та зупинки для згенерованих даних.

Простий приклад використання функції:

psql> SELECT generate_series(1,10);

test data generation

З прикладу видно нам, що функція generate_series() повертає послідовні числа між початковим і кінцевим параметрами. При використанні цієї функції числових даних збільшуватимуться на 1.

 

Друга функція, яку ми будемо використовувати називається random(). Функція генерує випадкове число з плаваючою комою від 0 до 1.

Простий приклад використання функції:

psql> SELECT random();

test data generation

 

Тепер давайте використовуємо ці дві функції разом і вставимо 1000 рядків з деякими випадковими даними в таблицю, яку ми створили.

psql> INSERT INTO random_number (id, age) VALUES (generate_series(1, 1000), trunc(random()*10 * 2));

test data generation

Як бачимо в результаті дані успішно генеруються.

Таким самим способом ми можемо генерувати мільйони рядків.


 

Всім дякую, я сподіваюся, що вам моя стаття хоч чимось допомогла.

 

СХОЖІ СТАТТІ

PostgreSQL - Як визначити, до яких файлів на диску відповідають таблиці в базі даних
PostgreSQL - Як визначити, до яких файлів на диску відповідають таблиці в базі даних
POSTGRESQL
Читати далі
PostgreSQL - Як дізнатися розмір таблиць у базі даних
PostgreSQL - Як дізнатися розмір таблиць у базі даних
POSTGRESQL
Читати далі
PostgreSQL - Як перевірити привілеї користувача
PostgreSQL - Як перевірити привілеї користувача
POSTGRESQL
Читати далі