有時因為測試需要,要在資料庫中模擬大量的資料,而這些資料都有一定的規律,比如現在有乙個包含200個使用者暱稱的資料檔案,要將這些暱稱匯入到使用者表中,使用者表的屬性有姓名、暱稱、性別、年齡、使用者型別等等,姓名必須是字母和數字組成的,而年齡只能取值0、1、2,分別代表女、男、保密,而年齡需要在18~35歲之間,使用者型別只能取兩個值(普通,高階),如何模擬出這樣一些資料呢,使用shuf命令可以輕鬆搞定。方法如下:
一.準備資料檔案
1.性別資料檔案:***.list
2.年齡資料檔案:age.list
3.使用者型別資料檔案:type.list
普通高階
4.使用者名稱資料檔案:asciitab.listab
zabz
5.暱稱檔案內容如下:alais.list
天空昭昭
多多……
壞孩子先進分子
二.編寫生產資料指令碼
新建乙個腳步檔案:makeuserdata.sh,內容如下:
cat alais.list |
while read line
dousername=`shuf -n 1 asciitab.list``shuf -n 1 asciitab.list``shuf -n 1 asciitab.list``shuf -n 1 asciitab.list``shuf -n 1 asciitab.list``shuf -n 1 asciitab.list`
***=`shuf -n 1 ***.list`
age=`shuf -n 1 age.list`
type=`shuf -n 1 type.list`
echo $username##$line##$***##$age##$type
done
說明:1.shuf -n 1 asciitab.list 的含義是從asciitab.list 檔案中隨機取出一行資料,如果是-n 2就是取出兩行資料
2.username就是由六位字母或數字組成
3.cat alais.list |while read line:讀取alais.list的每一行資料,並將該行資料儲存在line中,echo $username##$line##$***##$age##$type,就用到了這個變數
三.執行指令碼
sh makeuserdata.sh > userdata.list
生成的userdata.list內容如下:
a2srtc##昭昭##1##34##普通
bhgtrs##壞孩子##2##19##高階
98dyte##天空##1##24##普通
四.資料入庫
補充說明:
這個帖子發了有一段時間了,最近才發現,原來好多linux版本在安裝時不會安裝shuf命令,我在網上查了一下,未發現有關安裝這個命令的資料,同時通過linux自動查詢也沒有找到,比較奇怪啊。
我當初使用的cygwin,乙個在windows上模擬linux的工具,選擇的是完全安裝,shuf也就裝上了。
這裡給出乙個沒有shuf命令的解決辦法,就是寫乙個隨機讀取一行檔案的小命令,如下:
perl -e 'srand;' /
-e 'rand($.) < 1 && ($it = $_) while <>;' /
-e 'print $it' $1
這裡使用了perl命令,一般來說,perl命令是都會預設安裝的。
將以上指令碼儲存在檔案shuf.sh中,將以上用到shuf -n 1的地方修改為sh shuf.sh即可。
vue cli中使用mockjs模擬資料
在日常開發中是否遇到過這種情況 在進行前後端分離開發的專案時,我們前端的頁面寫好了,但是後端的介面還差一點,這個時候我們只能等後端把介面實現好或者我們自己模擬一些假資料,無論那種方法都會浪費大量時間。好在mockjs很好的幫我們解決了這個煩惱。npm install mockjs新建乙個mock.j...
PI模擬資料配置
數值模擬範圍 zero 起始值 span 結束值 location1 按照cdt158配置 location2 模擬值每次變動的幅度值為span 0.1 千分之一 位置2的值 location3 按照cdt158配置 location4 c program files pipc inte ces r...
Json模擬資料Mockjs
npm install mockjs2.自己設計json結構data.json 3.在相同的路徑下建立mockserver.js 使用mockjs提供mock資料介面 import mock from mockjs import data from data.json 返回goods的介面 mock...