mysql 에서 데이터 조회해와야 하는데 한번에 받아오는 데이터개수가 몇십만개~몇백만개 이상일때도 있음
그럼 무작정 타임아웃나지않게 걸어두고 마냥 기다릴수는 없으니 페이징 처리해서
디비 id (auto increment) 값으로 10000개씩 받아오게 함
public class TestResult
{
public long id { get; set; }
public string name { get; set; }
public int score { get; set; }
public DateTime time { get; set; }
}
static void Main(string[] args)
{
while (true)
{
using (var connection = new MySqlConnection("Server=ip;Port=port;User ID=id;Password=pw;Database=db_name"))
{
connection.Open();
var endTime = DateTime.Now;
var startTime = endTime.AddYears(-1);
var firstDetect = connection.Query<long>(String.Format("SELECT id FROM db_name where time >= '{0}'", startTime.ToString("yyyy-MM-dd HH:mm:ss")));
var detectId = firstDetect.ToList()[0]-1;
var limit = 10000;
var queryCount = limit;
var totalCount = 0;
while (queryCount == limit)
{
var Results = connection.Query<TestResult>(String.Format("SELECT id, name, score, time FROM db_name where id > {0} AND time <= '{1}' LIMIT {2}", detectId, endTime.ToString("yyyy-MM-dd HH:mm:ss"), limit)).ToList();
queryCount = Results.Count;
detectId = Results[Results.Count - 1].id;
totalCount += queryCount;
}
Console.ReadLine();
}
}
'C# > c#' 카테고리의 다른 글
[ c# ] 딕셔너리 복사 (0) | 2023.01.12 |
---|---|
[ c# ] mysql bulk insert (0) | 2023.01.01 |
[ c# ] 매일 밤 12시 폴더 생성 , 폴더 삭제 Task 이용 (0) | 2022.12.28 |
[ c# ] EF Core vs Dapper vs MySqlConnecter 성능 비교 (0) | 2022.12.27 |
[ c# ] MySqlConnector 로 mysql select , insert (0) | 2022.12.26 |