如何对切片进行分区并将切片数据同时插入数据库

时间:2019-05-28 10:48:53

标签: go goroutine concurrently

我在切片中有数据,我想对该切片进行分区,然后使用Goroutine我想在数据库中同时插入列表记录。 我有70到8万条记录要插入Oracle SQL,大约需要3到4个小时。我想加快这个过程。 如果还有其他方法可以解决。请让我知道。

func InsertDataIntoDb() {
    // Db := DbConnectiontwo()
    slicetwo := SelectData()

    for idrange := range gopart.Partition(len(slicetwo), 10000) {

        go routine(idrange.Low, idrange.High, slicetwo)
    }


func routine(low int, high int, slicetwo []jobStatus) {

    // Db := DbConnectiontwo()
    query := "INSERT INTO"//I have query here

    stmt: = query

    for i := low; i < high; i++ {
        _, err := Db.Exec(stmt, slicetwo[i].jobVer, slicetwo[i].joid, slicetwo[i].last_End, slicetwo[i].last_Scheduled_Start,
            slicetwo[i].last_Start, slicetwo[i].next_Start, slicetwo[i].status, slicetwo[i].status_Time)
        if err != nil {
            fmt.Println(err)
        }

    }
    fmt.Println("task is completed")
}

0 个答案:

没有答案