Cómo generar datos aleatorios en el server SQL

Quiero crear un procedimiento almacenado para insert datos aleatorios en la tabla 'Video'. Ya he generado 30,000 datos de logging para la tabla UserProfile.

Nota: El nombre de usuario es el elemento FK en la tabla Video.

CREATE TABLE UserProfile ( Username VARCHAR(45) NOT NULL , UserPassword VARCHAR(45) NOT NULL , Email VARCHAR(45) NOT NULL , FName VARCHAR(45) NOT NULL , LName VARCHAR(45) NOT NULL , Birthdate DATE , Genger VARCHAR(10) NOT NULL , ZipCode INT , Image VARCHAR(50) , PRIMARY KEY(Username) ); GO CREATE TABLE Video ( VideoId INT NOT NULL DEFAULT 1000 , Username VARCHAR(45) NOT NULL , VideoName VARCHAR(160) NOT NULL , UploadTime DATE , TotalViews INT , Thumbnail VARCHAR(100) , PRIMARY KEY(VideoId), FOREIGN KEY(Username) REFERENCES UserProfile(Username) ); GO 

No es demasiado difícil generar datos aleatorios, incluso en SQL

Por ejemplo, para get un nombre de usuario aleatorio de su tabla de perfil de usuario.

 BEGIN -- get a random row from a table DECLARE @username VARCHAR(50) SELECT @username = [Username] FROM ( SELECT ROW_NUMBER() OVER(ORDER BY [Username]) [row], [Username] FROM [UserProfile] ) t WHERE t.row = 1 + (SELECT CAST(RAND() * COUNT(*) as INT) FROM [UserProfile]) print(@username) END 

Para generar un integer aleatorio …

 BEGIN -- get a random integer between 3 and 7 (3 + 5 - 1) DECLARE @totalviews INT SELECT @totalviews = CAST(RAND() * 5 + 3 as INT) print(@totalviews) END 

Para generar una cadena varchar aleatoria

 BEGIN -- get a random varchar ascii char 32 to 128 DECLARE @videoname VARCHAR(160) DECLARE @length INT SELECT @videoname = '' SET @length = CAST(RAND() * 160 as INT) WHILE @length <> 0 BEGIN SELECT @videoname = @videoname + CHAR(CAST(RAND() * 96 + 32 as INT)) SET @length = @length - 1 END print(@videoname) END 

Y finalmente, una date aleatoria

 BEGIN -- get a random datetime +/- 365 days DECLARE @uploadtime DATETIME SET @uploadtime = GETDATE() + (365 * 2 * RAND() - 365) print(@uploadtime) END 

Como Aaron ya sugirió en su comentario, realmente no redeviseía la rueda.

Solo ve y encuentra algunas de las herramientas disponibles para esto.

Aquí hay un artículo sobre cómo hacer esto en VS e hilo aquí en StackOverflow.

Generadores de datos para el server SQL?

 declare @i int set @i=0 while (@i<7) Begin BEGIN -- get a random row from a table DECLARE @username VARCHAR(50) DECLARE @length INT SELECT @username = '' SET @length = CAST(RAND() * 50 as INT) WHILE @length <> 0 BEGIN SELECT @username = @username + CHAR(CAST(RAND() * 96 + 32 as INT)) SET @length = @length - 1 END END BEGIN -- get a random integer between 3 and 7 (3 + 5 - 1) DECLARE @totalviews INT SELECT @totalviews = CAST(RAND() * 5 + 3 as INT) print(@totalviews) END BEGIN -- get a random varchar ascii char 32 to 128 DECLARE @videoname VARCHAR(160) SELECT @videoname = '' SET @length = CAST(RAND() * 160 as INT) WHILE @length <> 0 BEGIN SELECT @videoname = @videoname + CHAR(CAST(RAND() * 96 + 32 as INT)) SET @length = @length - 1 END END BEGIN -- get a random datetime +/- 365 days DECLARE @uploadtime DATETIME SET @uploadtime = GETDATE() + (365 * 2 * RAND() - 365) END insert into table_1 values(@videoname,@username,@totalviews,@length,@uploadtime) end