본문 바로가기

파이썬으로 퀀트 프로그램 만들기 project

Python, MySQL - 시계열 데이터 처리를 위한 upsert 알아보기_2

728x90

sql에서 upsert 사용방법

insert into @table

(arg1, arg2, arg3)

values

(@arg1, @arg2, @arg3)

on duplicate key update (key를 제외한 update할 칼럼)

arg2 = @arg2, arg3 = @arg3

 

파이썬으로 upsert하는 방법을 보여주기 전에 MySQL에서 upsert를 먼저 보여드리겠습니다.

사용 예시를 보여주기 위해 exam db에 price테이블을 만든 후 데이터를 입력해보겠습니다.

use exam;

create table price_2(
	날짜 varchar(10),
    티커 varchar(6),
    종가 int,
    거래량 int,
    primary key(날짜, 티커)
);

insert into price_2 (날짜, 티커, 종가, 거래량)
values
('2021-01-02','000001',1340,1000),
('2021-01-03','000001',1315,2000),
('2021-01-02','000002',500,200);

그 후에 upsert를 통해 새로운 데이터를 추가해 보겠습니다.

insert into price_2 (날짜, 티커, 종가, 거래량)
values
('2021-01-02','000001',1340,1000),
('2021-01-03','000001',1315,2000),
('2021-01-02','000002',500,200),
('2021-01-03','000002',1380,3000)
as new
on duplicate key update
종가 = new.종가, 거래량 = new.거래량;

 

이처럼 upsert 기능을 이용하면 시계열 데이터의 추가 및 수정을 한번에 할 수 있습니다.

파이썬에서 sql 데이터에 upsert하는 과정을 다음 포스트에서 소개해 드리겠습니다.