수정의 연속이다. 지금도 수정 중이다.
당장 날씨데이터를 가져오지 못하는 관계로 처음엔 1일 단위로 출력하려던 날씨데이터를 새롭게 변경해 지역별, 날짜별로 24시간 1시간 간격으로 넣기로 결정했다.
정말 api연동이 절실한 순간이었다. 난 아직 근데 api가 뭔지 잘 모르겠다. 나중에 알게 되겠지.
하나하나 다 일일이 타이핑해서 넣기에는 지역 3개 하루치만 넣어도 무려 96개가 된다. 도저히 그렇게 할 자신이 없어서 방법을 찾아보기로 했다.
INSERT ALL을 사용했다.
-- 일괄추가
INSERT ALL
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 1, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 2, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 3, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 4, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 5, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 6, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 7, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 8, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 9, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 10, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 11, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 12, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 1, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 2, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 3, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 4, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 5, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 6, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 7, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 8, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 9, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 10, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 11, 38)
INTO WEATHER1 (code, regdate, weather, temperature, no)
values(func_SEQ_WEATHER1_CODE_nextval, CURRENT_DATE, '비', 12, 38)
SELECT * FROM DUAL;
다 하고 나서 자바에 기능을 만들어뒀다는 걸 떠올렸다.
바쁜 와중에 거기서 다시 돌렸는데 안돌아갔다. mapper에 형식이 틀렸더라. 아직 못고쳤다.
00~23시 24행에 알맞게 들어가야한다.
-- 우리가해냄
UPDATE WEATHER1
SET regdate = TO_DATE('2023-08-06-01', 'YYYY-MM-DD-HH24')
WHERE CODE = 26;
한 이틀은 걸린것 같다.
TO_DATE를 사용해 date를 해부하고 code(날씨고유키)로 걸렀다.
no(지역넘버)로 하기엔 데이터에 불순물이 너무 많았다.
mapper
@Update({ " UPDATE WEATHER1 SET regdate = TO_DATE(#{regdate}, 'YYYY-MM-DD-HH24') WHERE code = #{code} " }) public int weatherUpdateHour(Weather w);
Junit test
// 시간 업데이트 @Test void weatherUpdateHour() { for (int i = 1; i <= 24; i++) { Weather w = new Weather(); w.setCode(34 + i); if (i < 10) { w.setRegdate2("2023-03-06-0" + i); } else { w.setRegdate2("2023-03-06-" + i); } System.out.println(mapper.weatherUpdateHour(w)); } }
for문을 두번 돌릴 뻔했는데 훨씬 간단한 방법이 있었다.
w.setCode(34 + i);
날짜를 하고나니 기온은 쉬웠다.
UPDATE WEATHER1
SET temperature = 9.5
WHERE code = 49;
mapper
@Update({ " UPDATE WEATHER1 SET temperature = #{temperature} WHERE code = #{code} " }) public int weatherUpdateTemp(Weather w);
Junit test
// 날씨 업데이트 @Test void weatherUpdateTemp() { for (int i = 1; i <= 24; i++) { Weather w = new Weather(); w.setCode(34+i); if (i < 7) { w.setTemperature(9.7f); } else if (i >= 7 && i <= 12) { w.setTemperature(18f); } else if (i >= 11 && i <= 18) { w.setTemperature(22.9f); } else if (i >= 19 && i <= 24) { w.setTemperature(15f); } System.out.println(mapper.weatherUpdateTemp(w)); } }