C#/c# 9

[ c# ] mysql bulk insert

큐에 담긴 데이터 insert 하는데 한번에 하나씩 인서트 하니까 성능 너무 떨어짐 그래서 한번에 여러개 넣을 수 있게 함 auto increment 여부 상관 없음 와중에 테이블 외래키로 묶여있으면 못 한다는거 같음 public void BulkInsert(ConcurrentBag Rows) if (Rows.Count > 0) { string connection = "Server=ip;User ID=id;Password=pw;Database=db_name;Port=port"; using (MySqlConnection mConnection = new MySqlConnection(connection)) { StringBuilder sCommand = new StringBuilder("INSERT INTO ..

C#/c# 2023.01.01

[ c# ] mysql db 조회시 페이징 이용 (너무 많은 데이터 받아와야할때 사용)

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("Serve..

C#/c# 2022.12.30

[ c# ] 매일 밤 12시 폴더 생성 , 폴더 삭제 Task 이용

폴더 생성 태스크 while (true) 현재 요일 폴더 있는지 확인함 없으면 생성 현재 시간과 오늘 오후 11:59 시간 차이 계산 시간 차이만큼 sleep 폴더 제거 태스크 while (true) 설정된 시간 (한 달)보다 더 오래된 폴더 제거 현재 시간과 다음 날 0:00 시간 차이 계산 시간 차이만큼 sleep try { string firstHttpFolderPath = "." + "/" + DateTime.Now.ToString("yyyyMMdd"); DirectoryInfo firstDi = new DirectoryInfo(firstHttpFolderPath); if (firstDi.Exists == false) { firstDi.Create(); } Task.Factory.StartNew(..

C#/c# 2022.12.28

[ c# ] EF Core vs Dapper vs MySqlConnecter 성능 비교

비교 결과는 내 상황에 맞춘거라 모든 상황에 맞지 않을 수 있음 select 총 데이터 개수 : 1,105,704 데이터 개수 SqlConnector Dapper EFCore MySqlData MySqlDataCore 2,151 637ms 248ms 1992ms 25ms 29ms 5,499 658ms 730ms 2207ms 539ms 51ms 13,203 658ms 726ms 2195ms 546ms 126ms 28,611 675ms 728ms 2102ms 543ms 230ms 49,347 692ms 743ms 2218ms 563ms 378ms 984,915 1948ms 1226ms 7264ms 6268ms 4182ms 1,007,154 1799ms 1794ms 7155ms 6449ms 4236ms 1,0..

C#/c# 2022.12.27

[ open API ] open API _ 공공 데이터 포털 xml 데이터 가져오기

1. 원하는 데이터를 선택한다. 2. 활용신청을 클릭해서 신청하고 승인이 나면 데이터 이용이 가능하다. 3. 샘플 코드 4. 요청 변수를 url 에 다 넣어서 보냄 url에 데이터 넣음 string url = string.Format("{0}?ServiceKey={1}&pageNo={2}&numOfRows={3}&startCreateDt={4}&endCreateDt={5}", targetUrl, serviceKey, pageNo, numOfRows, startCreateDt, endCreateDt); 5. xml 로 받은 데이터를 파싱한다. -> XmlDocument 클래스를 이용 XmlDocument document = new XmlDocument(); document.LoadXml(xmlData); ..

C#/c# 2021.11.17