Самый быстрый способ заполнить таблицу SQL фиктивными данными
каков самый быстрый способ заполнить таблицу SQL фиктивными данными?
У меня есть широкая таблица с примерно 40 полями разных видов(int, bit, varchar и т. д.) и нужно провести тестирование производительности. Я использую SQL Server 2008.
спасибо!
4 ответов
генератор данных SQL по Редгейт
генерация данных в один клик
реалистичные данные, основанные на имени столбца и таблицы
данные можно подгонять если пожелано
устраняет часы утомительной работы
полная поддержка SQL Server 2008
рекомендовать бесплатный, GNU-лицензионный, случайный пользовательский генератор данныхhttp://www.generatedata.com/
поздний ответ, но может быть полезен другим читателям этой темы. Помимо других решений, я могу рекомендовать импорт данных из .csv-файл с использованием SSMS или пользовательских сценариев импорта SQL, программ. Существует пошаговое руководство о том, как это сделать, поэтому вы можете проверить его: http://solutioncenter.apexsql.com/how-to-generate-randomized-test-data-from-a-csv-file/
имейте в виду, что импорт a .csv-файл с использованием SSMS или пользовательских сценариев импорта SQL проще, чем создание SQL вставляет вручную, но есть некоторые ограничения, как описано в учебнике:
Если есть необходимость в тысячах строк для заполнения и.csv-файл содержит несколько сотен строк данных, которых просто недостаточно. Способ импортировать то же самое .csv-файл снова и снова, пока не понадобится. Недостатком этого метода является то, что он вставляет большие блоки строк с одинаковыми данными без их рандомизации.
учебник также объясняет, как использовать сторонний генератор данных SQL с именем ApexSQL Генерирует. Инструмент имеет интегрированную функцию для генерации больших объемов рандомизированных данных из импортированных .файл в формате csv. Приложение имеет полнофункциональную бесплатную пробную версию, так что вы можете скачать и попробовать его, чтобы увидеть, если он работает для вас.
Как упоминалось в "SQLMenace", Redgate Data Generator-настолько хороший инструмент для его выполнения, что он стоит $ 369, у вас есть 14-дневный пробный шанс.
хороший момент заключается в том, что RedGate идентифицирует внешние ключи, чтобы вы могли применить JOIN в своих запросах.
у вас есть куча опций, которые позволяют вам решить, как каждый столбец должен быть заполнен, каждый столбец ожидается семантически, чтобы предложить связанные данные, например, если у вас есть столбец с именем "Отдел "не заполнен странными персонажами, он заполнен выражениями типа" технический"," веб"," клиент " и т. д. Даже вы можете использовать регулярное выражение для ограничения выбранных символов.
Я заполнил свои таблицы более чем 10 000 000 записей, что было потрясающей симуляцией.
обновление:
Вам нужно только Go 1000
после вставки, чтобы заполнить его 1000 раз, так же, как это:
INSERT INTO dbo.Cusomers(Id, FirstName, LastName) VALUES(1, 'Mohamed', 'Mousavi')
GO 1000
он сделает таблицу с 1000 такими же строками в он. Другое решение заключается в том, что вы можете заполнить первую строку своей таблицы некоторыми данными, затем вы заполняете следующие строки таблицы, повторяя первую строку снова и снова, это означает, что вы заполняете свою таблицу самостоятельно:
INSERT INTO dbo.Customers
SELECT * FROM dbo.Customers
GO 10
в случае, если один или несколько столбцов идентичность означает, что они принимают уникальные значения, если это автоматический инкрементный, вы просто не помещаете его в запрос, например, если Id в dbo.Клиент-это личность, запрос идет следующим образом:
INSERT INTO dbo.Customers
SELECT FirstName, Last Name FROM dbo.Customers
GO 10
Из:
INSERT INTO dbo.Customers
SELECT Id, FirstName, Last Name FROM dbo.Customers
GO 10
иначе вы столкнетесь с такой ошибкой:
An explicit value for the identity column in table 'dbo.Customers' can only be specified when a column list is used and IDENTITY_INSERT is ON.
Примечание.:
Это своего рода арифметическая прогрессия, поэтому она будет длиться немного, не используйте большое число перед GO
.
если вы хотите иметь таблицу, которая заполнила немного более подробно, то вы можете достичь этого таким же образом на этот раз, выполнив простой запрос и выполнив следующие шаги:
выберите одну из ваших таблиц, которая имеет замечательное количество строк, скажем dbo.Клиенты
щелкните правой кнопкой мыши на нем и выберите
Script Table as > Create To > New Query Editor Window
назовите свою новую таблицу чем-то еще вроде dbo.CustomersTest, теперь вы можете выполнить запрос, чтобы иметь новую таблицу с аналогичной структурой с dbo.Клиенты.
Примечание: имейте в виду, что если у него есть идентификатор, измените его Identity Specification to No
так как вы должны заполнить новую таблицу данными исходной неоднократно.
-
запустите следующий запрос, он будет запущен 1000 раз, вы можете изменить его на более или менее, но имейте в виду, что он может длиться менуэты на основе вашего компьютерного оборудования:
вставить в [dbo].[CustomersTest] Выберите * из [dbo].[Клиенты] GO 1000
через некоторое время у вас есть таблица с фиктивными строками в ней!