2013-07-31 24 views
13

'Video' tablosuna rastgele veri eklemek için saklı yordam oluşturmak istiyorum. UserProfile tablosu için zaten 30.000 kayıt verdim.SQL Server'da rasgele veri oluşturma

Not: Kullanıcı adı, Video tablosunda FK öğesidir.

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 
+2

Madde: http://mitchelsellers.com/blogs/2008/09/12/creating-random-sql-server-test-data.aspx yararlı – christiandev

+0

teşekkür görünüyor –

+3

Neden [tekerleği yeniden icat etmek yerine bir araç kullanın] (http://www.red-gate.com/products/sql-development/sql-data-generator/)? –

cevap

16

Bu sizin userprofile tablodan rastgele adı almak için, hatta Örneğin

SQL

yılında, rasgele verileri oluşturmak için çok zor değil.

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 

rasgele bir tamsayı oluşturmak için ...

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 

Aaron gibi,

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 

Ve nihayet rasgele bir tarih

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

rastgele varchar dizesini oluşturmak için zaten onun yorumunda önerdi - Ben wou Direksiyonu gerçekten icat etmeyeceğim.

Sadece bunun için mevcut olan bazı araçları bulun ve bulun.

Here, VS'de bunun nasıl yapılacağı ve StackOverflow üzerinde işleneceği bir makaledir.

Data generators for SQL server?

1
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 
burada
+0

lütfen cevabı açıklayan bir açıklama ekleyin. – jjj

İlgili konular