Go言語とSQLiteでランダムの顧客10人の注文をランダムの金額1000~10000の範囲で10000件登録してみる。
まず下記のコードを記載する。
package main import ( "database/sql" "fmt" "log" "math/rand" "strconv" "time" _ "github.com/mattn/go-sqlite3"(//自動入力されないので、手打ちで入力する) ) func main() { db, err := sql.Open("sqlite3", "sample.db") if err != nil { log.Fatal(err) } a := `CREATE TABLE orders( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER, price INTEGER );` _, err := db.Exec(a) if err != nil { //log.Fatal(err) } var t string var k string for i := 0; i < 10000; i++ { rand.Seed(time.Now().UnixNano()) user_id := rand.Intn(9) + 1 t = strconv.Itoa(user_id) price := rand.Intn(9000) + 1000 k = strconv.Itoa(price) s := "INSERT INTO orders(user_id, price) VALUES('" + t + "','" + k + "')" _, err = db.Exec(s) if err != nil { log.Fatal(err) } } }
CREATE TABLE ordersでid,user_id,priceが入ったtableを作成する。
次にランダムのuser_idと金額を作成する。ランダムは、rand.Seed(time.Now().UnixNano())とrand.Intn()の組み合わせで用いる。rand.Intn()の中の()には、ランダムにしたい数字を入れる。今回のuser_idは1~10まで表示したいので、引数を9として、0~9のuser_idがランダムに表示されるようにし、+1をすることで、1~10のuser_idが表示されることになる。
strconv.Itoa()は、数字を文字列に変換する。
"INSERT INTO ordersでuser_idとpriceの値をtableに挿入する。この時、tとkを変数としての文字列と認識させるために、" + t + "、" + k + "とする。
res, err = db.Exec(s)で、ランダムの変数t,kを挿入するsを実行する。今回は、10000件登録するので、ランダムに変数を作成して挿入するまでをforの繰り返しでう。
この時、変数tとkをforの外で囲わないとエラーが発生する。