gpt4 book ai didi

go - 如何使用golang查询将数据流传输到Cassandra

转载 作者:行者123 更新时间:2023-12-01 20:26:08 31 4
gpt4 key购买 nike

我有以下代码:

cluster := gocql.NewCluster("our-cass")
cass, err := cluster.CreateSession()
defer cass.Close()
iter := cass.Query(`SELECT * FROM cmuser.users LIMIT 9999999999;`).Iter()
c :=iter.Columns()
scanArgs := make([]interface{}, len(c))

for i:=0; i < len(scanArgs); i++ {
scanArgs[i] = makeType(c[i])
}

for iter.Scan(scanArgs...) { ... }

问题是,该表中的行太多了。但是我需要阅读所有内容,才能将数据迁移到另一个数据库。有没有一种方法可以从Cassandra传输数据?不幸的是,我们没有表主键的序列,我们为PK使用了uuid。因此,这意味着我们无法对循环进行简单的2技巧,即增加一个计数器并以这种方式遍历所有行。

最佳答案

Gocql有一些用于分页的选项(假设您的Cassandra版本至少是版本2)。

Gocql的Session具有方法SetPageSize

Gocql的Query也有类似的方法PageSize

这可以帮助您分解查询。代码如下所示:

cluster := gocql.NewCluster("our-cass")
cass, err := cluster.CreateSession()
defer cass.Close()

iter := cass.Query(`SELECT * FROM cmuser.users;`).PageSize(5000).Iter()

// use the iter as usual to iterate over all results
// this will send additional CQL queries when it needs to get new pages

关于go - 如何使用golang查询将数据流传输到Cassandra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62184292/

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