Вывод по n записей из базы до тех пор пока они не закончатся

Возникла необходимость написания программы для копирования данных из одной базы во вторую с такими же таблицами. Так как в базе большое кол-во данных, чтобы не нагружать оперативную память, было решено делать выборку небольшими порциями. Всё должно выглядеть примерно следующим образом - выбирается n строк из одной таблицы, для каждой строки берётся запись из второй, далее они вставляются в соответствующие таблицы другой бд, и так пока они не закончатся. Но как именно реализовать данную выборку я не имею понятия. Для работы с базами используется dapper. То что я смог сделать (без выборки по n записей)

        public IEnumerable<Text> SelectTexts()
    {
       return ConnectionSource.Query<Text>($"SELECT * FROM StreamText{Date} {Where};");
    }

    public IEnumerable<Photo> SelectPhoto(IEnumerable<Text> texts)
    {
        if (texts == null) 
            throw new ArgumentNullException(nameof(texts));

        foreach (var text in texts)
        {
            var query = $"SELECT * FROM StreamText{Date} WHERE ID={text.ID}";

            yield return ConnectionSource.QuerySingle<Photo>(query);
        }
    }

    public void InsertText(IEnumerable<Text> texts)
    {
        if (texts == null) 
            throw new ArgumentNullException(nameof(texts));

        ConnectionTarget.BulkInsert(texts);
    }

    public void InsertPhoto(IEnumerable<Photo> photos)
    {
        if (photos == null) 
            throw new ArgumentNullException(nameof(photos));
        ConnectionTarget.BulkInsert(photos);
    }

Ответы (0 шт):