標籤:
Introduction
該工具可以根據資料庫表的描述檔案類比資料庫表記錄。
Github:https://github.com/chinaeagle001/DataEmulator
Get Started1 編寫描述檔案
使用時僅需編寫一個資料庫表的描述檔案,即可產生相應行數的資料庫表記錄。資料庫表描述檔案的格式如下:
table:tablename1 rowsfieldname1 fieldtype1 [min,max)|{val1,...,valn} pk...fieldnamen fieldtypen [min,max)|{val1,...,valn}table:tablename2fieldname1 fieldtype1 [min,max)|{val1,...,valn}...fieldnamen fieldtypen [min,max)|{val1,...,valn}
每個資料庫表描述檔案可以包含單個或多個表的描述資訊,每個表的第一行以table:開頭,其後接表名,rows表示將要產生的資料庫表記錄的行數,為可選資訊。其後n行為表欄位的描述資訊,fieldname為欄位名,fieldtype為欄位類型,目前支援int、long、float、double、string和varchar,string和varchar使用時的效果相同。[min,max)|{val1,...,valn}為對該欄位取值的約束,[min,max)表示一個取值範圍,表示可以取到符合資料類型的從min(包含)到max(不包含)的所有值,{val1,...,valn}表示一個取值集合,即該欄位只能取該集合內的值,不能取其他值,取值範圍和取值集合只能設定一個,不能二者同時設定,但是可以都不設定。最後還可以設定欄位為pk,即表示該欄位為主鍵,不可插入重複值。
NOTE:
- 欄位的每一項描述資訊之間以單個空格隔開
- 取值範圍和取值集合資訊內部不能包含空格
- 取值範圍和取值集合不可同時設定
- 取值範圍、取值集合和主鍵約束為可選資訊,可以不填
- 資料庫表記錄的產生行數要麼用表名後面的rows進行設定,要麼在執行EmulateService.emulate(rows)時進行設定,至少要設定一處,若兩處都設定,則以EmulateService.emulate(rows)為準。
一個描述檔案的執行個體:
table:person 20id int [1,1000) pkage int [1,120)gender int {0,1}money double [0,1000000)coef doublecount long
2 根據描述檔案產生資料庫插入語句
EmulateService service = new EmulateService("/Users/Admin/Documents/tableinfo");System.out.println(service.emulate());
EmulateService service = new EmulateService("/Users/Admin/Documents/tableinfo");System.out.println(service.emulate(5)); //為emulator()函數中傳入rows參數
插入語句產生結果
insert into person(id,age,gender,money,coef,count) values(291,94,0,53412.21630881065,0.5779976127815049,7692545845379467444),(239,24,0,261361.0344283964,0.0508673570556899,-3620809042008399078),(684,101,0,157092.75796406597,0.3966187758324009,4607446640046108149),(920,47,0,624595.0526048058,0.986777681078574,8927642045409361120),(911,93,1,786998.2163966655,0.45354157926164607,-4313673043051624580),(20,92,1,664855.2384607359,0.8735817151239903,-7508906734973982553),(11,28,1,124671.13618049053,0.9734051779586359,5351526109491550133),(867,81,0,909606.4988407127,0.21212965912771842,897966445284003410),(991,29,0,600485.2315198382,0.8919574955689352,5936093823740762813),(720,81,0,537669.789256303,0.13056074959413433,6167679450490020352),(872,37,0,230361.65505933613,0.6349515457561012,-8273762954102208134),(613,105,1,173744.61354678206,0.24459185391975935,4334141001737976751),(892,16,1,93626.73601215122,0.38629133067688814,-4814762211230589829),(740,69,1,877803.2932818531,0.5004153012631574,3841626164676692156),(164,46,0,16203.3794649159,0.786204377521101,-3540351928265827338),(413,114,1,898904.6100799685,0.7137705656016263,-1021667364372863749),(179,51,0,361814.34572503634,0.451531569768709,233900225619619757),(230,69,0,969495.3066159218,0.6184311865576196,-843724423055990433),(310,78,1,908526.264743164,0.30687587651597414,8955454434489590540),(63,44,0,658074.8661432414,0.22715526857430424,-2933386510045183448)
insert into person(id,age,gender,money,coef,count) values(291,94,0,53412.21630881065,0.5779976127815049,7692545845379467444),(239,24,0,261361.0344283964,0.0508673570556899,-3620809042008399078),(684,101,0,157092.75796406597,0.3966187758324009,4607446640046108149),(920,47,0,624595.0526048058,0.986777681078574,8927642045409361120),(911,93,1,786998.2163966655,0.45354157926164607,-4313673043051624580)
資料庫記錄模擬器——DataEmulator