Подтвердить что ты не робот

Самый быстрый способ заполнить таблицу SQL с помощью Dummy Data

Каков самый быстрый способ заполнить таблицу SQL фиктивными данными?

У меня есть широкая таблица с примерно 40 полями разных типов (int, bit, varchar и т.д.) и вам нужно провести некоторое тестирование производительности. Я использую SQL Server 2008.

Спасибо!

4b9b3361

Ответ 1

Генератор данных SQL от RedGate

Генерация данных за один клик

Реалистичные данные, основанные на имени столбца и таблицы

При необходимости можно настроить данные

Устраняет часы утомительной работы

Полная поддержка SQL Server 2008

Ответ 2

Рекомендовать бесплатный генератор произвольных пользовательских данных, лицензированный GNU http://www.generatedata.com/

Ответ 3

Поздний ответ, но может быть полезен другим читателям этой темы. Помимо других решений, я могу рекомендовать импортировать данные из CSV файла, используя SSMS или настраиваемые сценарии импорта SQL, программы. Существует пошаговое руководство по тому, как это сделать, поэтому вы можете проверить его: http://solutioncenter.apexsql.com/how-to-generate-randomized-test-data-from-a-csv-file/

Имейте в виду, что импорт CSV файла с использованием SSMS или настраиваемых сценариев импорта SQL проще, чем создание вложений SQL вручную, но есть некоторые ограничения, как объясняется в учебнике:

Если требуется заполнить тысячи строк, а файл .csv содержит несколько сотен строк данных, этого недостаточно. Обходной путь реимпортирует тот же CSV файл снова и снова, пока это не понадобится. Недостатком этого метода является то, что он будет вставлять большие блоки строк с теми же данными без их рандомизации.

В учебнике также объясняется, как использовать сторонний генератор данных SQL, называемый ApexSQL Generate. Инструмент имеет встроенную функцию для генерации большого количества рандомизированных данных из импортированного файла в формате .csv. Приложение имеет полностью функциональную бесплатную пробную версию, поэтому вы можете загрузить ее и попробовать, чтобы убедиться, что она работает для вас.

Ответ 4

Вам нужно только 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.Customer - это идентификатор, запрос выглядит так:

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.Customers

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

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

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

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

INSERT INTO [dbo].[CustomersTest] SELECT * FROM [dbo].[Customers] GO 1000

  1. Через некоторое время у вас есть таблица с пустыми строками!

Как упомянул @SQLMenace, RedGate Data Generator - очень хороший инструмент для его выполнения, он стоит 369 долларов, хотя у вас есть пробный шанс на 14 дней.

Хорошим моментом является то, что RedGate идентифицирует внешние ключи, чтобы вы могли применять JOIN в своих запросах.

У вас есть набор опций, которые позволяют вам решить, как каждый столбец должен быть заполнен, каждый столбец ожидается семантически, так что предлагаются связанные данные, например, если у вас есть столбец с именем "Отдел", он не заполняется странно символы, он заполняется такими выражениями, как "Технический", "Веб", "Клиент" и т.д. Даже вы можете использовать регулярные выражения для ограничения выбранных символов.

Я заполнил свои таблицы более чем 1000000 записями, что было потрясающим симулятором.