200-beego读取json快速插入数据库







读取json快速插入数据库




如果不使用事务,直接插入
效率会非常慢
所以应该先开启事务
然后将数据全部插入之后
再提交事务




	//创建orm对象
	o := orm.NewOrm()

	//开启事务
	o.Begin()

	//遍历切片,将cmt插入到数据库
	for i := 0; i < len(comments); i++ {
		cmt := comments[i]
		o.Insert(&cmt)
	}

	//提交事务
	o.Commit()






func (this *RootController) PostRoot() {

	username := this.GetString("username")
	password := this.GetString("password")

	if username != "lichhowger" || password != "lichhowger888888" {
		this.Ctx.WriteString("ok")
		return
	}

	//打开data.json文件
	file, err := os.Open("./static/data/data.json")
	defer file.Close()
	if err != nil {
		this.Ctx.WriteString("fail-" + err.Error())
		return
	}

	//创建一个字节切片[]byte
	bytes := make([]byte, 10*1024)

	//将数据读取到切片中
	num, err := file.Read(bytes)
	if err != nil {
		this.Ctx.WriteString("fail-" + err.Error())
		return
	}

	//定义一个Comment切片
	var comments []models.Cmt

	//将字节切片中的数据反序列化到comments切片中
	json.Unmarshal(bytes[:num], &comments)

	//创建orm对象
	o := orm.NewOrm()
	
	//开启事务
	o.Begin()

	//遍历切片,将cmt插入到数据库
	for i := 0; i < len(comments); i++ {
		cmt := comments[i]
		o.Insert(&cmt)
	}

	//提交事务
	o.Commit()

	this.Ctx.WriteString("ok")
}




 

你可能感兴趣的:(golang,beego,mysql)