我正在尝试使用一个Golang程序在sqlite3数据库中加载大约20k个项目。
但是,这需要很多时间......比如45分钟......
我试着这样做:
_,errExec:=db.Exec("Insert into ...")
是否有任何解决方案在5分钟内减少更新或插入(约20k项目)?如果是的话,我该怎么办?
感谢您的回答。
编辑:完整功能:
func updateDB(){
file, err := ioutil.ReadFile("./database/id.json")
if err != nil {
fmt.Printf("File error: %v\n", err)
os.Exit(1)
}
var ids []int
json.Unmarshal(file, &ids)
db, err := sql.Open("sqlite3","./database/gwitem.db")
if err != nil {
log.Fatal(err.Error())
}
defer db.Close()
var prix price
for i :=0; i < len(ids); i++{
//getJson("https://api.guildwars2.com/v2/commerce/prices/"+strconv.Itoa(ids[i]),&prix)
url := "https://api.guildwars2.com/v2/commerce/prices/"+strconv.Itoa(ids[i])
getJson(url,&prix)
_,errExec:=db.Exec("Insert into trade values(null,"+strconv.FormatInt(prix.Id,10)+","+strconv.FormatInt(prix.Buys.Quantity,10)+","+strconv.FormatInt(prix.Buys.Unit_price,10)+","+strconv.FormatInt(prix.Sells.Quantity,10)+","+strconv.FormatInt(prix.Sells.Unit_price,10)+",0)")
if errExec != nil{
fmt.Println(err.Error())
log.Fatal(err)
}
}
}