Pour des tests, il peut y avoir la nécessité de disposer d’un jeu de données factices pour faire grossir artificiellement une base ou autre. La requête ci-dessous permet de générer un jeu de données aléatoire dans une table avec tout types de données, dans un intervalle ou pas :
Vous l’aurez compris, le TOP permet d’interagir sur le nombre de lignes à renvoyer.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
DECLARE @DateStart DATETIME = DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0), @DateEnd DATETIME = DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1), @IntStart TINYINT = 1, @IntEnd TINYINT = 10 SELECT TOP 1000000 ABS(CHECKSUM(NEWID()))%2500+1 AS SomeId, CAST(((@IntEnd + 1) - @IntStart) * RAND(CHECKSUM(NEWID())) + @IntStart AS TINYINT) [SomeTinyntInterval], ABS(CHECKSUM(NEWID()) % 10) % 2 [SomeBit], CHAR((ABS(CHECKSUM(NEWID())) % 26) + 97) + CHAR((ABS(CHECKSUM(NEWID())) % 26) + 97) + CHAR((ABS(CHECKSUM(NEWID())) % 26) + 97) + CHAR((ABS(CHECKSUM(NEWID())) % 26) + 97) + CHAR((ABS(CHECKSUM(NEWID())) % 26) + 97) + CHAR((ABS(CHECKSUM(NEWID())) % 26) + 97) + CHAR((ABS(CHECKSUM(NEWID())) % 26) + 97) + CHAR((ABS(CHECKSUM(NEWID())) % 26) + 97) + CHAR((ABS(CHECKSUM(NEWID())) % 26) + 97) + CHAR((ABS(CHECKSUM(NEWID())) % 26) + 97) [SomeVarchar], DATEADD(MILLISECOND, (ABS(CHECKSUM(NEWID())) % 6000) * -1, DATEADD(MINUTE, (ABS(CHECKSUM(NEWID())) % 1000000) * -1, GETDATE())) [SomeDateTime], DATEADD(d, RAND(ABS(CAST(CAST(NEWID() AS BINARY(8)) AS INT)))*(CAST((@DateEnd - @DateStart) AS INT )), @DateStart) [SomeDateTimeInterval], (ABS(CHECKSUM(NEWID())) % 100001) + ((ABS(CHECKSUM(NEWID())) % 100001) * 0.00001) [SomeNumeric] FROM Master.dbo.SysColumns t1, Master.dbo.SysColumns t2 |
Au premier abord, générer un jeu de données aléatoire peut sembler laborieux mais au final, c’est relativement simple et rapide à mettre en place compte tenu de la richesse du T-SQL, on ne le dira jamais assez. Vous avez besoin de créer une base de données avec un échantillon de données suffisant pour vos tests, c’est chose faite ! Si vous avez déjà traîné vos guêtres sur le site, vous aurez l”occasion de vous rendre compte que le script a été exploité à plusieurs reprises (voir mot clé “réplication”). Pour le reste, il y a notre chère et tendre base de données AdventureWorks disponible sur différentes versions de SQL Server sur CodePlex.