Golang Sqlite3插入或更新多行

时间:2017-01-09 20:48:37

标签: go sqlite

我正在尝试使用一个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)
    }
 }
}

0 个答案:

没有答案