Créer des données de test dans SQL Server

Est-ce que quelqu'un a ou connaît un script SQL qui va générer des données de test pour une table donnée?

Idéalement, il examinera le schéma de la table et créera des lignes avec des données de test basées sur le type de données de chaque colonne.

Si cela n'existe pas, quelqu'un d'autre le findait-il utile? Si c'est le cas, je vais retirer mon doigt et en écrire un.

Eh bien, je pensais que je retirerais mon doigt et écrirais moi-même un générateur de données léger:

declare @select varchar(max), @insert varchar(max), @column varchar(100), @type varchar(100), @identity bit, @db nvarchar(100) set @db = N'Orders' set @select = 'select ' set @insert = 'insert into ' + @db + ' (' declare crD cursor fast_forward for select column_name, data_type, COLUMNPROPERTY( OBJECT_ID( TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'IsIdentity') AS COLUMN_ID from Northwind.INFORMATION_SCHEMA.COLUMNS where table_name = @db open crD fetch crD into @column, @type, @identity while @@fetch_status = 0 begin if @identity = 0 or @identity is null begin set @insert = @insert + @column + ', ' set @select = @select + case @type when 'int' then '1' when 'varchar' then '''test''' when 'nvarchar' then '''test''' when 'smalldatetime' then 'getdate()' when 'bit' then '0' else 'NULL' end + ', ' end fetch crD into @column, @type, @identity end set @select = left(@select, len(@select) - 1) set @insert = left(@insert, len(@insert) - 1) + ')' exec(@insert + @select) close crD deallocate crD 

Étant donné une table, le script va créer un logging avec des valeurs arbitraires pour les types; int, varchar, nvarchar, smalldatetime et bit. L'instruction case pourrait être remplacée par une fonction. Il ne descendra pas les dependencies, mais il ignorera toutes les colonnes ensemencées.

Ma motivation pour créer ceci est de tester mes files de mappage NHibernate sur une table de 50 colonnes, donc je cherchais rapidement un script simple qui peut être réutilisé.

Avez-vous essayé ApexSQL Generate: https://www.apexsql.com/sql_tools_generate.aspx ?

Je suis tombé dessus pendant ma propre search pour la même chose, et cela a très bien fonctionné. Ce n'est pas gratuit, mais vous obtenez un essai gratuit avec toutes les fonctionnalités disponibles, vous pouvez donc essayer avant d'acheter.

Je pense que cela répondra bien à vos besoins, car il garde une trace de vos relations entre les tables, les types de colonnes et même les contraintes (pour des bases de données plus complexes).

Une chose que j'ai aimé (et dont j'avais besoin, en fait) était qu'elle avait des valeurs embeddedes pour les noms réels, les adresses, etc. Cela aide tellement lorsqu'on interroge des données de test créées et non pas des strings randoms.

En outre, vous pouvez exporter vers SQL (ou quelques autres formats) et utiliser datatables créées à tout moment pour repeupler la database.

Il y a un programme du logiciel de porte rouge qui fera cela pour vous. C'est ce qu'on appelle SQL Data Generator .

Certaines versions de Visual Studio intègrent la génération de données. Si vous utilisez des projets de database, vous pouvez créer des plans de génération de données. Voici l'article MSDN

J'ai utilisé la façon suivante, il copy essentiellement des données de lui-même, datatables croissent de manière exponentielle à chaque exécution.Claveat est que vous devez avoir des données d'exemple au début et aussi vous devez exécuter la requête par exemple j'ai eu 327680 lignes de données quand j'ai commencé 10 lignes de données. En exécutant la requête seulement 16 fois.Exécutez une fois de plus et je vais hanger 655360 lignes de données!

  insert into mytable select [col1], [col2], [col3] from mytable