4 Aralık 2016 Pazar

Sql Server Test Datası Nasıl Oluştururum?

Bir coğumuz SQL Server üzerinde sorgu testleri yapmak ve büyük boyutlu databaselerde sorgularımızın analizini yapmak için test datası oluşturma ihtiyacımız olmuştur. Bu işlemleri yapmak için 3.party yazılımlar kullanabileceğimiz gibi kendimizde T-SQL komutları kullanarak bu işlemi yapabiliriz. Bu makalemde  sizlere T-SQL kullanarak test datası oluşturma işlemimizi anlatmak istiyorum.

Bu işlemi oluşturma esnasında ilk prosesim bir table oluşturmak olacak. Bu tableım 1 adet nvrchar primary key kolon ve 4 adet ise  date kolonum içerecek. T-SQL döngüleri ve random sayı üreticileri ile bu tabloyu doldurmak istiyorum.

CREATE TABLE dbo.TestTableSize ( MyKeyField VARCHAR(10) NOT NULL, MyDate1 DATETIME NOT NULL, MyDate2 DATETIME NOT NULL, MyDate3 DATETIME NOT NULL, MyDate4 DATETIME NOT NULL, MyDate5 DATETIME NOT NULL )

Tableımı oluşturduktan  sonra Aşağıdaki script kullanarak değişkenleri oluşturuyoruz ve döngümüzün ne kadar çalışacağını belirliyoruz. Döngümüzü çalıştırırak tablomuzu dolduruyoruz. Sizde tablomuz üzerinde ve T-SQL scriptimizde değişiklik yaparak  sorguyu özelleştirebilir ve kendi test datamızı doldurabiliriz.

DECLARE @RowCount INT DECLARE @RowString VARCHAR(10) DECLARE @Random INT DECLARE @Upper INT DECLARE @Lower INT DECLARE @InsertDate DATETIME SET @Lower = -730 SET @Upper = -1 SET @RowCount = 0 WHILE @RowCount < 3000000 BEGIN SET @RowString = CAST(@RowCount AS VARCHAR(10)) SELECT @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0) SET @InsertDate = DATEADD(dd, @Random, GETDATE()) INSERT INTO TestTableSize (MyKeyField ,MyDate1 ,MyDate2 ,MyDate3 ,MyDate4 ,MyDate5) VALUES (REPLICATE('0', 10 - DATALENGTH(@RowString)) + @RowString , @InsertDate ,DATEADD(dd, 1, @InsertDate) ,DATEADD(dd, 2, @InsertDate) ,DATEADD(dd, 3, @InsertDate) ,DATEADD(dd, 4, @InsertDate)) SET @RowCount = @RowCount + 1 END

Sql Server DateTime Veri Tipindeki Datayı Türkçe Formatında Göstermek

  SQL'de tarihleri farklı formatlarda göstermek için FORMAT fonksiyonunu kullanabilirsiniz. Türkçe kısa tarih formatı genellikle "...