当前位置: > > > > 如何在查询数据库时将雪花数组转换为Golang中的数组
如何在查询数据库时将雪花数组转换为Golang中的数组
来源:stackoverflow
2024-04-26 08:51:42
0浏览
收藏
欢迎各位小伙伴来到米云,相聚于此都是缘哈哈哈!今天我给大家带来《如何在查询数据库时将雪花数组转换为Golang中的数组》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!
问题内容
我正在使用“gosnowflake”驱动程序从我的 golang 应用程序查询 snowflake db。 雪花架构:- 名称字符串 年龄整数 locs 数组
golang 代码:-
package main
import (
"database/sql"
"fmt"
"log"
"strings"
_ "github.com/snowflakedb/gosnowflake"
)
type person struct {
name string
age string
locs []string
}
var db *sql.db
func main() {
connstring := "user" + ":" + "pwd" + "@" + "region" + "/" + "test"
fmt.println("db connection string..", connstring)
db, _ = sql.open("snowflake", connstring)
defer db.close()
qry := "select name,age,locs from test.person where name='abc'"
result, _ := db.query(qry)
fmt.println(result)
for result.next() {
var row person
err := result.scan(&row.name, &row.age, &row.locs)
if err != nil {
log.fatal(err)
}
fmt.println("before returning..", row)
}
}
问题:- 这里的问题出在数组中的 db locs 中,但是在从 golang 代码查询时,它以字符串形式返回。所以这些值就像
[ "XYZ", "DEF" ]
我想要的是直接将 locs 值转换为我的 golang 代码中的数组。因此,在 person 结构内部,它直接绑定到 loc []string。
解决方案
除非 gosnowflake 中已经有内置的字符串数组类型,否则您可能需要实现遵循 的自己的类型
例如
type arraystring []string
func (a *arraystring) scan(src interface{}) error {
switch v := src.(type) {
case string:
return json.unmarshal([]byte(v), a)
case []byte:
return json.unmarshal(v, a)
default:
return errors.new("invalid type")
}
}
那么你的 person 结构将是:
type Person struct {
Name string
Age string
Locs ArrayString
}
理论要掌握,实操不能落!以上关于《如何在查询数据库时将雪花数组转换为Golang中的数组》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注米云公众号吧!
