본문 바로가기
개발 업무(코딩)-개발자였을때 썼던..

코스콤 배치 작업 내역

by 주용사 2023. 1. 9.
728x90

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분 안걸린다.

더고려해서 짜야하는 게 있다면 댓글 부탁드려요..

728x90