Вывод по 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);
}