加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在Golang中同时迭代sql结果集?

发布时间:2020-12-16 09:26:04 所属栏目:大数据 来源:网络整理
导读:next()方法是顺序的,有没有办法同时迭代循环? 我有一个200k行的结果集,我按顺序循环并在每一行上执行逻辑并想要将其拆分. 解决方法 你从查询中获得的sql.Rows不能同时使用(我相信). 但你可以在goroutines做大部分繁重的工作. 这是一个例子(非工作但很接近),
next()方法是顺序的,有没有办法同时迭代循环?

我有一个200k行的结果集,我按顺序循环并在每一行上执行逻辑并想要将其拆分.

解决方法

你从查询中获得的sql.Rows不能同时使用(我相信).

但你可以在goroutines做大部分繁重的工作.

这是一个例子(非工作但很接近),在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
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读