Самый быстрый способ заполнить таблицу 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.

если вы хотите иметь таблицу, которая заполнила немного более подробно, то вы можете достичь этого таким же образом на этот раз, выполнив простой запрос и выполнив следующие шаги:

  1. выберите одну из ваших таблиц, которая имеет замечательное количество строк, скажем dbo.Клиенты

  2. щелкните правой кнопкой мыши на нем и выберите Script Table as > Create To > New Query Editor Window

  3. назовите свою новую таблицу чем-то еще вроде dbo.CustomersTest, теперь вы можете выполнить запрос, чтобы иметь новую таблицу с аналогичной структурой с dbo.Клиенты.

Примечание: имейте в виду, что если у него есть идентификатор, измените его Identity Specification to No так как вы должны заполнить новую таблицу данными исходной неоднократно.

  1. запустите следующий запрос, он будет запущен 1000 раз, вы можете изменить его на более или менее, но имейте в виду, что он может длиться менуэты на основе вашего компьютерного оборудования:

    вставить в [dbo].[CustomersTest] Выберите * из [dbo].[Клиенты] GO 1000

  2. через некоторое время у вас есть таблица с фиктивными строками в ней!