gpt4 book ai didi

go - 如何并发遍历 Golang 中的 sql 结果集?

转载 作者:IT王子 更新时间:2023-10-29 01:09:03 25 4
gpt4 key购买 nike

next() 方法是顺序的,有没有办法在循环中并发迭代?

我有一个 20 万行的结果集,我按顺序循环并在每一行上执行逻辑并想将其拆分。

最佳答案

您从查询中返回的 sql.Rows 不能同时使用(我相信)。

但是您可以在 goroutine 中完成大部分繁重的工作。

这是一个示例(无法正常工作,但很接近),在 Play

package main

import "fmt"
import "sql"

type Row struct {
x string
y string
z string
}

func processor(ch chan Row) {
for row := range <-ch {
// be awesome
}
}
func main() {
ch := make(chan Row)
// two handler go routines (current processors)
go processor(ch)
go processor(ch)
rows := db.Query("select x,y,z from whatever")
for rows.Next() {
var row Row
if err := rows.Scan(&row.x, &row.y, &row.z); err != nil {
// do something with error
} else {
ch <- row
}
}
}

关于go - 如何并发遍历 Golang 中的 sql 结果集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33661442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com