1. 1월1일에 주말을 제외한 모든 날짜 인서트
- mariadb로 구현을 했다. mysql에서는 1년치 데이터를 가져오는 것이 존재했었는데..mariadb는 못찾았다.
1. 1월1일 비교
SELECT CASE DATE_FORMAT(NOW(), '%m%d') WHEN '0101' THEN 1 ELSE 0 END , DATE_FORMAT(NOW(), '%Y%m%d');
2. 1~365번 돌면서 주말제외 날짜를 인서트한다. DATE_ADD로 날짜를 더해나갔다.
INSERT INTO 테이블( WORKDATE )
(SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL +%d DAY), '%Y%m%d') FROM DUAL
WHERE WEEKDAY(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL +%d DAY), '%Y%m%d')) NOT IN ('5', '6'));
3. 윤달있는 날 제거 -> 2번에서 365번을 돌면 하루가 오버된다. 제거
DELETE FROM 테이블 WHERE WORKDATE = TRIM('%s');
2. 국내 영업일과 19시 인지 가져온다
- 위에서 만든 테이블 내용으로 체킹. 19시는 배치시간
3. 국내 휴장일을 가져오고 영업일 테이블에서 지운다
- curl holiday 콜
4. 국내 주식 데이터를 파일로 떨군다
- 개별 curl콜을 해서 데이터를 가져오기엔 너무 내용이 많다.
- 코스콤에서 list형식으로 내려주는 것이 있다.
- 종목리스트, 시고저종, 거래량거래대금
5. 국내 주식 데이터를 DB에 넣는다
- 위에서 떨군 파일을 가지고 DB에 넣는다.
6. 국내 주식 기준가와 상장주식수를 DB에 넣는다
- 기준가와 상장주식수는 어쩔수 없이 curl을 개별로 콜해줘야했다. -> curl 자체오류가 발생할 수도 있음
- 거의 3천번을 콜해야하기 때문에 실패했을 경우 따로 데이터를 저장시켜서 다시한번 curl콜을 하게 했다.(retry)
7. 전일 종가와 오늘 기준가를 가지고 수정계수만들고 수정데이터 만든다
- 당일기준가와 전일종가를 가지고 수정계수를 만든다.
- 당일은 이미 수정주가가 반영되서 내려오기때문에 따로 수정할 필요가 없다.
- 당일을 제외한 모든 데이터에 수정계수를 곱해서 저장한다.
--> 위와 같은 이유때문에 수정계수_주가 와 주가 두가지를 들고 있어야 편하다.
참고
작업하면서 제일 문제였던 것은 curl이 오류가 많다는 것이다. 타임아웃이 제일 흔하고..
curl_easy_perform() failed: Timeout was reached
한글명 때문에 애먹을 수도 있다..
mysql_set_character_set(pConn, "utf8"); <- euckr 환경이라면 이걸 추가해서 작업
과거의 데이터들을 가져와야 하는데 코스콤에서도 제공한다. 그러나 내가 처음개발할때는 작동이 잘안되서 키움증권api를 이용해서 과거내역들을 저장했다. 오늘이 8월11일. 그러면 8월10일까지 키움증권꺼로..8월11부터는 코스콤꺼로..
위의 작업들이 다 끝나면 20분 안걸린다.
더고려해서 짜야하는 게 있다면 댓글 부탁드려요..
'개발 업무(코딩)-개발자였을때 썼던..' 카테고리의 다른 글
execl 로 프로세스 실행시키기 (0) | 2023.01.09 |
---|---|
c-java(클라) tr전문 테스트용 샘플 (0) | 2023.01.09 |
MYSQL TRIGGER(트리거) (0) | 2023.01.09 |
C언어 HMAC SHA256 샘플코드(openssl) (0) | 2023.01.09 |
c-json 라이브러리에 대한 고찰과 소수점 짜르는 소스 (0) | 2023.01.09 |