Je veux créer une procédure stockée pour insérer des données aléatoires dans le tableau "Vidéo". J'ai déjà généré 30 000 données d'enregistrement pour la table UserProfile.
Remarque: Le nom d'utilisateur est l'élément FK dans la table vidéo.
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
Il n'est pas trop difficile de générer des données aléatoires, même en SQL
Par exemple, pour obtenir un nom d'utilisateur aléatoire dans votre table de profil utilisateur.
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
Pour générer un entier aléatoire ...
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
Pour générer une chaîne varchar aléatoire
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
Et enfin, une date aléatoire
BEGIN
-- get a random datetime +/- 365 days
DECLARE @uploadtime DATETIME
SET @uploadtime = GETDATE() + (365 * 2 * Rand() - 365)
print(@uploadtime)
END
Comme Aaron l'a déjà suggéré dans son commentaire - je ne réinventerais pas vraiment la roue.
Allez simplement trouver certains des outils déjà disponibles pour cela.
Ici est un article sur la façon de le faire dans VS et de le faire ici sur StackOverflow.
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