I am doing some performance testing on a SQL sproc and just want to bang out a quick data generator for testing.
I am after a simple way to generate a pseudo random (true random not needed in this case) varchar field.
Ideas I have so far is having a character definition of valid characters that can be used and then build the string from this definition and use a pseudo random length for length variation with a max/min length defined.
Edit:
My test data generator:
DECLARE @MyDataTable TABLE
(
RecID int IDENTITY(1,1) PRIMARY KEY,
SomeText varchar(255)
)
DECLARE @RecId int, @SomeText varchar(255),
@maxlength int, @minlength int,
@RecordCount int, @Counter int
SET @maxlength = 254
SET @minlength = 50
SET @RecordCount = 500000
SET @Counter = 1
WHILE (@Counter < @RecordCount)
BEGIN
INSERT INTO @MyDataTable
(
SomeText
)
SELECT TOP 1
(
select top (abs(checksum(newid())) % (@maxlength-@minlength) + @minlength) char(abs(checksum(newid())) % 26 + ascii('A'))
from sys.all_objects a1
where sign(a1.object_id) = sign(t.object_id) /* Meaningless thing to force correlation */
for xml path('')
) as NewRandomString
FROM sys.all_objects t;
SET @Counter = @Counter + 1
END
I wrote a blog post on this recently.
http://msmvps.com/blogs/robfarley/archive/2009/12/07/randomising-data.aspx
Edit: Sorry - didn't include the random length thing...
Edit: Sorry - needs to be correlated...
This will generate a random string of variable length.
If you need it quick or you don't want to do it yourself, you can also use the tool from
http://www.generatedata.com/
but you can only generate 100 rows if you are just using the online demo.
For SQL Server 2008
Samples:
My evil twin wants to use this as a password generator...