我正在我的 SQL 服务器实例中创建 JSON 数据(大约 5000 条记录),并尝试使用 golang 中的批量插入操作将其插入到沙发库存储桶中。这里的问题是没有推送整个数据,并且仅插入随机数量的记录(2000 到 3000 之间)。
代码是:
package main
import (
"database/sql"
"log"
"fmt"
_ "github.com/denisenkom/go-mssqldb"
"gopkg.in/couchbase/gocb.v1"
)
func main() {
var (
ID string
JSONData string
)
var items []gocb.BulkOp
cluster, _ := gocb.Connect("couchbase://localhost")
bucket, _ := cluster.OpenBucket("example", "")
condb, _ := sql.Open("mssql", "server=.\\SQLEXPRESS;port=62587; user id=<id>;password=<pwd>;")
// Get approx 5000 Records From SQL Server in JSON format
rows, err = condb.Query("Select id, JSONData From User")
if err != nil {
log.Fatal(err)
err = nil
}
for rows.Next() {
_ = rows.Scan(&ID,&JSONData)
items = append(items, &gocb.UpsertOp{Key: ID, Value: JSONData})
}
//Bulk Load JSON into Couchbase
err = bucket.Do(items)
if err != nil {
fmt.Println("ERRROR PERFORMING BULK INSERT:", err)
}
_ = bucket.Close()
}
请告诉我这里哪里出错了。
仅供参考,sql 查询中的列 ID 和 JSONdata 包含有效的键和 JSON 字符串。此外,将不胜感激其编码方式的任何改进建议。