PostgreSQL - Генерація тестових даних
Колеги всім привіт.
У сьогоднішній статті ми поговоримо про те, як можна згенерувати тестові дані в СУБД 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));
Як бачимо в результаті дані успішно генеруються.
Таким самим способом ми можемо генерувати мільйони рядків.
Всім дякую, я сподіваюся, що вам моя стаття хоч чимось допомогла.