Представьте, что вы администратор БД, которому поставили задачу настроить тестовый сервер и населить его тестовыми данными. Сервер довольно старый, и места на диске маловато. Итак, вы задумываетесь о создании примера. Цель работы состоит в уменьшении общего объема данных и ускорении последующего анализа. Некоторым так нравится подобная идея, что они даже не задумываются, какие данные подойдут для примера. Сначала следует осознать, что инструмента, который возьмет и отрежет кусочек от вашей БД, просто нет. Увы!.. И вы поймете почему, если прочитаете этот раздел. Рассмотрим, какой SQL-код поможет вывести пример данных. Па деле это довольно просто: здесь вам пригодится функция random о внутри оператора where. Например:
При этом where random < 0.01 присваивает каждой строке случайное число в диапазоне от 0.0 до 1.0, а затем отбирает те строки, для которых это значение оказалось менее 0.01. Другими словами, для примера отобран 1 % строк таблицы. Вы легко можете модифицировать этот код и вывести необходимые для ваших нужд проценты. Теперь вытащим данные для примера из базы данных. По некоторым причинам это хитрая задача. Во-первых, нет возможности задать where для pg_dump. Во-вторых, если создать представление с помощью where, все равно pg_dump возьмет только его определение, а не само представление. Тем не менее лучше по возможности избегать создания таких примеров. Или хотя бы ограничиться несколькими большими таблицами. Так вы решите сразу две проблемы: выполните математическое моделирование примера и избежите сложностей с вытаскиванием данных. Механизм извлечения демонстрирует возможности инструментов командной строки PostgreSQL psql и pg_dump. Функция pg_dump позволяет включать или исключать файлы и делать дамп всей таблицы или даже ее схемы, в то время как psql выполняет дамп результата произвольного запроса в файл. Не будем останавливаться на том, насколько случайными являются результаты работы функции random, поскольку не это является нашей целью. При желании вы можете выбрать другой внешний генератор случайных чисел и вызывать его в SQL с помощью функции языка С.
Рубрика: Женский интерес