Генераторы данных для SQL сервера?
Я хотел бы получать предложения о доступных генераторах данных для сервера SQL. Если вы публикуете ответ, укажите, какие функции вы считаете важными.
Я никогда не использовал такое приложение, поэтому я стремлюсь получить образование по этой теме. Спасибо.
(My goal is to fill a database with 10,000+ records in each table, to test an application.)
9 ответов
Я свернул свой собственный генератор данных, который генерирует случайные данные, соответствующие регулярным выражениям. Он превратился в учебный проект (в стадии разработки) и доступен на github.
Я использовал генератор данных в прошлом. Может быть стоит посмотреть.
Стороннее редактирование
Если вы не регистрируетесь, вы можете создать только 100 строк. Ниже вы можете найти пример того, как интерфейс выглядит сегодня (октябрь 2016)
Нечто подобное было задано здесь: создание тестовых данных в базе данных
Red Gate SQL Data Generator отлично работает в этой области. Вы можете настроить каждое поле вашей базы данных и использовать случайные данные с семенами. И даже создавать конкретные шаблоны, используя выражения Regex.
Для генерации примеров данных я использую простые приложения Python.
Соображения:
Прост в изменении и настройке.
Повторяемый набор данных, который вы можете использовать для тестирования производительности и получения согласованных результатов.
Следуйте всем правилам и ограничениям ссылочной целостности БД.
Реалистичные данные.
Первые два указывают, что вы хотите создать файлы сценариев, которые будут загружать ваши данные. Третий жестче. Существуют способы обнаружения метаданных и ограничений базы данных. Глядя на 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 (также известный как Data Dude) делает это.
Я еще не использовал его для генерации данных, но 2 функции звучат неплохо:
Установите собственное начальное значение для генератора случайных данных. Это позволяет выдавать одни и те же случайные данные более одного раза.
Направьте мастера на "реальную" базу данных и сделайте так, чтобы он генерировал нечто похожее на реальные данные.
Может быть, это стандартные функции в другом месте?
Я использовал инструмент под названием Datatect для этого.
Некоторые вещи, которые мне нравятся в этом инструменте:
- Использует ODBC, чтобы вы могли генерировать данные в любой источник данных ODBC. Я использовал это для баз данных Oracle, SQL и MS Access, простых файлов и электронных таблиц Excel.
- Расширяется с помощью VBScript. Вы можете писать хуки в различных частях рабочего процесса генерации данных, чтобы расширить возможности инструмента.
- Справочно осознавать. При заполнении столбцов внешнего ключа извлекает допустимые ключи из родительской таблицы.
Это бесплатно: http://www.sqldog.com/ содержит несколько функций, таких как: генератор данных, полнотекстовый поиск, создание документации базы данных, активные подключения к базе данных
Я использовал это раньше
http://sqlmanager.net/en/products/mssql/datagenerator
Это не бесплатно, хотя.
Проверка целостности ссылок очень важна, иначе ваши тесты будут бесполезны без сопоставления связанных данных (в большинстве случаев).