我在我的SQL Server實例創建JSON數據,並試圖將其插入在golang使用大容量插入操作couchbase桶(約5000條記錄)。這裏的問題是整個數據沒有被推送,並且只有插入了隨機數量的記錄(在2000到3000之間)。gocb:批量插入到couchbase使用golang-整個數據沒有被插入
的代碼是:
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()
}
請告訴我,我哪裏錯在這裏。
FYI列ID和JSONdata在SQL查詢中包含有效的鍵和JSON字符串。此外,任何改善建議,在編碼的方式將不勝感激。
你如何驗證2-3000?從Couchbase網絡用戶界面?一個建議(主要是作爲安全)將使用insert()而不是upsert,以防萬一id不唯一。 –
@MattIngenthron我實際上是調用一個存儲過程,用每個記錄的唯一文檔ID填充用戶表中的數據,我也嘗試過使用Insert操作。即使我沖洗桶並插入一批新的數據,我也會得到相同的結果。是的,我正在觀察從Couchbase網絡用戶界面插入的數量 –