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

30 篇文章 1 订阅
17 篇文章 0 订阅






读取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")
}




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值