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