資料庫生成簡單的測試資料

2021-10-01 13:22:44 字數 1230 閱讀 3215

當需要手動在新增資料庫新增測試資料時,如果資料量大是絕對不考慮親手一條一條輸入的,此時選擇用sql迴圈寫入資料。

例如圖示結構的一張表

其中,objid和equipid都設定為從1遞增的整數,tirecode和stationcache是不重要的字段隨意賦值,vulnum、locnum、catchnum在業務上為0或1或2的整數。要生成100條測試資料,那麼寫這樣一段sql:

truncate table wcsvulstatus

declare @i int

declare @vul int

declare @loc int

declare @catch int

set @i = 1

while @i < 101 begin

set @vul = cast(round(100*rand(),0)as int) % 3

set @loc = cast(round(100*rand(),0)as int) % 3

set @catch = cast(round(100*rand(),0)as int) % 3

insert into wcsvulstatus values(@i,@i,'1','null',@vul,@loc,@catch)

set @i =@i +1

endgo

select * from wcsvulstatus

這段**清空了wcsvulstatus表裡原有的資料並插入了100條測試資料,每條測試資料的vulnum,locnum,catchnum都是隨機生成的(不必糾結這裡的概率不等問題)。

然而在寫這段**時踩到乙個坑,我所需要的0,1,2這三個數字可以通過用3對乙個隨機整數取餘得到,可我卻沒有關注到這個隨機整數的細節。

執行select round(100*rand(),0),我們可以獲得乙個100以內的隨機整數,當我直接用3去對它取余時,select round(100*rand(),0) % 3,卻得到了這個報錯資訊資料型別 float 和 int 在 modulo 運算子中不相容。。也就是說,雖然前面看似拿到了整數,但它本質還是乙個float型別的資料,不能用來做取餘運算(原因不明)。

於是決定使用cast做乙個型別轉換,能夠正常執行。

faker php測試資料庫生成2

因內容太長,被csdn截斷了,只好把另外的內容寫到這裡。biased 在10到20之間得到乙個隨機數字,有更大的機率接近20 echo faker biasednumberbetween min 10,max 20,function sqrt echo htmllorem 生成不超過2個級別的htm...

測試資料生成

目的 sql server 搭建日誌傳輸,模擬災難轉移,在主庫上不斷生成測試資料,模擬生產環境。生成測試資料指令碼 表結構 if table dbo.t1 exists,then drop it if object id dbo.t1 u is not null drop table dbo.t1 ...

測試資料庫腳步

執行 sql,以資料庫管理員身份登入,下面給出測試資料庫的指令碼 需要鍛鍊動手能力的朋友,可以執行它!create database teaching gouse teaching gocreate table student sno char 10 primary key,sname char 8...