Ответ 1
Я развернул свой собственный генератор данных, который генерирует случайные данные, соответствующие регулярным выражениям. Он превратился в учебный проект (разрабатывается) и доступен по адресу github.
Я хотел бы получить предложения по генераторам данных, которые доступны для SQL-сервера. Если вы отправляете ответ, предоставьте все функции, которые, по вашему мнению, важны.
Я никогда не использовал такое приложение, поэтому я хочу получить образование по этой теме. Спасибо.
(Моя цель - заполнить базу данных с 10 000 + записей в каждой таблице, чтобы протестировать приложение.)
Я развернул свой собственный генератор данных, который генерирует случайные данные, соответствующие регулярным выражениям. Он превратился в учебный проект (разрабатывается) и доступен по адресу github.
Здесь было задано нечто подобное: Создание тестовых данных в базе данных
Red Gate SQL Data Generator отлично справляется с этим доменом. Вы можете настроить каждое поле вашей базы данных и использовать случайные данные с семенами. И даже создавать определенные шаблоны с использованием выражений Regex.
Для создания выборочных данных я использую простые приложения Python.
Вопросы:
Простое изменение и настройка.
Повторяемый набор данных, который можно выполнить для тестирования производительности и получения согласованных результатов.
Следуйте всем правилам и ограничениям ссылочной целостности базы данных.
Реалистичные данные.
Первые два означают, что вы хотите создать script файлы, которые будут загружать ваши данные. Третий - более жесткий. Существуют способы обнаружения метаданных базы данных и ограничений. Глядя на 3 и 4 вместе, вам не нужна простая обратная инженерия - вам нужно что-то, что вы можете контролировать для создания реалистичных ценностей.
Как правило, вы хотите создать собственную модель сущности, чтобы быть уверенным, что у вас есть правильные диапазоны и ключевые отношения.
Вы можете сделать это тремя способами.
Создайте CSV файлы данных, которые можно загрузить вручную. Хорошие повторяемые тестовые данные.
Создайте сценарии SQL, которые вы можете запустить. Хорошие повторяемые данные.
Используйте ODBC-соединение для генерации данных непосредственно в базе данных. Мне на самом деле это не нравится, но вы можете.
Здесь урезана одна-единственная версия генератора данных, который записывает CSV файл.
import csv
import random
class SomeEntity( list ):
titles = ( 'attr1', 'attr2' ) # ... for all columns
def __init__( self ):
self.append( random.randrange( 1, 10 ) )
self.append( random.randrange( 100, 1000 ) )
# ... for all columns
myData = [ SomeEntity() for i in range(10000) ]
aFile= open( 'tmp.csv', 'wb' )
dest= csv.writer( aFile )
dest.writerow( SomeEntity.titles )
dest.writerows( myData )
aFile.close()
Для нескольких объектов вам необходимо определить мощность. Вместо генерации случайных ключей вы хотите сделать произвольный выбор из других объектов. Таким образом, у вас может быть ChildEntity выбор случайного элемента из ParentEntity, чтобы убедиться, что отношения FK-PK верны.
Используйте random.choice(someList)
и random.shuffle(someList)
для обеспечения ссылочной целостности.
Visual Studio Team System Database Edition (aka Data Dude) делает это.
Я еще не использовал его для генерации данных, но 2 функции звучат хорошо:
Задайте собственное начальное значение для генератора случайных данных. Это позволяет вам производить одни и те же случайные данные более одного раза.
Направьте мастер в "настоящую" базу данных и создайте что-то, что похоже на реальные данные.
Возможно, это стандартные функции в других местах?
Я только что нашел об этом: Spawner
Я использовал инструмент Datatect для этого.
Некоторые из вещей, которые мне нравятся в этом инструменте:
этот бесплатный: http://www.sqldog.com содержит несколько функций, таких как: генератор данных, полнотекстовый поиск, создание документации по базам данных, активные соединения с базой данных
Я использовал это раньше
http://sqlmanager.net/en/products/mssql/datagenerator
Его не бесплатно, хотя.
Проверка целостности ссылок очень важна, или ваши тесты не будут хорошими без корреляции связанных данных (в большинстве случаев)