Есть ли способ узнать, извлекал ли запрос данные из базы данных clickhouse с помощью GOlang?
У меня есть это:
dataRows, err := connect.Query(dbQuery)
if err != nil {
log.Fatal(err)
}
defer dataRows.Close()
Мне интересно, могли бы вы сделать что-нибудь вроде:
var rowsRetrieved int = dataRows.RowsCount
Спасибо, я был бы признателен за вашу помощь.
Я использую этот драйвер для подключения к clickhouse: https://github.com/mailru/go-clickhouse
Предполагая, что вам нужно только знать, были ли строки любой, вы можете сделать:
dataRows, err := connect.Query(dbQuery)
if err != nil {
log.Fatal(err)
}
defer dataRows.Close()
if hasRows := dataRows.Next(); hasRows {
handleRow(dataRows)
for dataRows.Next() {
handleRow(dataRows)
}
} else {
// has no rows
}
func handleRow(rows *sql.Rows) {
// handle the row
}
Я обнаружил, что если вы используете функцию .Next (), она будет перебирать 1 строку данных и начинать со второй, например: у вас есть 2 записи, если вы используете функцию .Next () и повторяете после использования. () он начнется со 2-й записи.
Это итератор (можно ли использовать на нем метод
.Next()
)? Если это так, и если у него нетRowsCount
или его эквивалента, вам, вероятно, придется перебирать строки и подсчитывать их таким образом. Дайте ссылку на пакет, который вы используете, и я могу копать дальше.