Задать вопрос
kondr1
@kondr1
golang, js, c++

Как в go получить результат sql запроса по частям?

Пытаюсь сделать запрос к бд, который возвращает крайне много данных. Как можно обрабатывать их по мере получения, допустим по 1000 строк? Позволяет такое стандартная либа database/sql?
  • Вопрос задан
  • 1529 просмотров
Подписаться Оценить 2 комментария
Решения вопроса 2
tiabc
@tiabc
Бизнес-партнер и консультант по технологиям
Позволяет по дефолту, но не по тысяче строк, а в виде курсора, который двигается при каждом вызове rows.Next(), о чем подробнее можно прочитать в документации database/sql:
https://golang.org/pkg/database/sql/#Rows

Там же есть пример, который это иллюстрирует:
rows, err := db.Query("SELECT ...")
...
defer rows.Close()
for rows.Next() {
    var id int
    var name string
    err = rows.Scan(&id, &name)
    ...
}
err = rows.Err() // get any error encountered during iteration
...


Только в Go для конкретных баз данных написаны разные драйверы: https://github.com/golang/go/wiki/SQLDrivers
И хорошо бы заранее проверить в исходниках, что драйвер, который вы используете, действительно использует курсор внутри, а не считывает, например, сразу все в слайс и выдает элементы из него по одному.
Ответ написан
Комментировать
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
это позволяет сам sql сервер, go здесь вообще не при делах.

limit offset в гугле
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
2ord
@2ord
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы