pref: 优化批量导入数据库

This commit is contained in:
TsMask
2023-09-23 14:35:12 +08:00
parent 56944ad13d
commit b35ac3e50b
5 changed files with 132 additions and 113 deletions

View File

@@ -1,7 +1,6 @@
package repo
import (
"fmt"
"strconv"
"strings"
@@ -182,66 +181,39 @@ func (r *RepoUdmAuthUser) ClearAndInsert(neID string, authArr []model.UdmAuthUse
}
num += results
}
// // 清空指定ne_id
// _, err := datasource.ExecDB("", "DELETE FROM u_auth_user WHERE ne_id = ?", []any{neID})
// if err != nil {
// log.Errorf("TRUNCATE err => %v", err)
// return num
// }
// for _, u := range authArr {
// u.NeID = neID
// results, err := datasource.DefaultDB().Table("u_auth_user").Insert(u)
// if err != nil {
// return num
// }
// num += results
// }
return num
}
// Insert 新增实体
func (r *RepoUdmAuthUser) Insert(neID string, authUser model.UdmAuthUser) int64 {
authUser.NeID = neID
authUser.Status = "1"
func (r *RepoUdmAuthUser) Insert(authUser model.UdmAuthUser) int64 {
results, err := datasource.DefaultDB().Table("u_auth_user").Insert(authUser)
if err != nil {
log.Errorf("Insert err => %v", err)
return results
}
return results
}
// Insert 批量添加
func (r *RepoUdmAuthUser) Inserts(neID string, authUser model.UdmAuthUser, num string) int64 {
var insertNum int64
imsiVlen := len(authUser.Imsi)
imsiV, err := strconv.Atoi(authUser.Imsi)
if err != nil {
return 0
}
numV, err := strconv.Atoi(num)
if err != nil {
return 0
}
authUser.NeID = neID
authUser.Status = "1"
for i := 0; i < numV; i++ {
imsi := fmt.Sprint(imsiV + i)
if len(imsi) < imsiVlen {
imsi = fmt.Sprintf("%0*s", imsiVlen, imsi)
func (r *RepoUdmAuthUser) Inserts(authUsers []model.UdmAuthUser) int64 {
var num int64
n := len(authUsers)
batchSize := 5000
for i := 0; i < n; i += batchSize {
end := i + batchSize
if end > n {
end = n
}
authUser.Imsi = imsi
results, err := datasource.DefaultDB().Table("u_auth_user").Insert(authUser)
if err == nil {
insertNum += results
}
}
batch := authUsers[i:end]
return insertNum
// 调用 InsertMulti 函数将批量数据插入数据库
results, err := datasource.DefaultDB().Table("u_auth_user").InsertMulti(batch)
if err != nil {
continue
}
num += results
}
return num
}
// Update 修改更新