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

StackOverflow https://stackoverflow.com/questions/2899654

  •  04-10-2019
  •  | 
  •  

Вопрос

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

У меня есть широкий стол с примерно 40 полей различных видов (INT, BIT, VARCHAR и т. Д.) И нужно выполнять тестирование производительности. Я использую SQL Server 2008.

Спасибо!

Это было полезно?

Решение

Генератор данных SQL Redgate.

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

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

Данные могут быть настроены при желании

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

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

Другие советы

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

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

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

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

Учебник также объясняет, как использовать 3-й генератор данных SQL Party Apexsql генерирует. Отказ Инструмент обладает встроенной функцией для создания большого количества рандомизированных данных из импортированного формата .csv файла. Приложение имеет полнофункциональную бесплатную пробную версию, чтобы вы могли загрузить и попробовать, чтобы посмотреть, работает ли он для вас.

Вам только нужно 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

В случае, если один или несколько столбцов являются идентичностью (означающее, что они принимают уникальные значения, если он автоматически увеличивается), вы просто не размещаете его в своем запросе, например, если идентификатор в 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 - это такой хороший инструмент для его выполнения, он стоит $ 369, у вас есть шанс 14 дней, хотя.

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

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

Я населял свои таблицы более 10 000 000 записей, которые были удивительным симуляциями.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top