當需要手動在新增資料庫新增測試資料時,如果資料量大是絕對不考慮親手一條一條輸入的,此時選擇用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...