pref: 优化批量导入数据库
This commit is contained in:
@@ -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 修改更新
|
||||
|
||||
Reference in New Issue
Block a user