하는 일/데이터엔지니어링

[ Redshift ] MySQL과 쿼리 비교

yeznable 2025. 6. 4. 14:12
728x90

전에 MySQL에서 Redshift로 데이터 이관을 할 때 MySQL의 SP에서 사용되고 있던 문법과 함수들의 차이를 정리했었다.

블로그로 써둔줄 알았는데 사내 문서에만 적어뒀어서 이번에 작성한다.

당시에는 세세한 것들까지 작성 해뒀는데 지금 보니 그럴 필요까지는 없을 것 같고 생각보다 다른 형식이었던 것 몇개만 남긴다.


 

문자열 조합

[ MySQL ]

- CONCAT 활용
e.g.) CONCAT('a' , '_' , 'b')

 

[ Redshift ]
- || 활용
e.g.) 'a' || '_' || 'b'


IF 조건문

[ MySQL ]

- IF 활용
e.g.) SUM(IF(code=80103, 1, 0))

 

[ Redshift ]
- DECODE 활용
e.g.) SUM(DECODE(code, 80103, 1, 0)


IFNULL 조건문

[ MySQL ]

- IFNULL 활용
e.g.) IFNULL(uid, 'unknown')

 

[ Redshift ]
- NVL 활용
e.g.) NVL(uid, uid, 'unknown') 또는 NVL2(uid, uid, 'unknown')


다이나믹 쿼리를 위한 문자열 쿼리

[ MySQL ]

- PREPARE, EXECUTE 활용
e.g.) 

PREPARE stmt1 FROM @stmt; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1;

 

[ Redshift ]
- PREPARE, EXECUTE 활용하지만 방식이 조금 다름
e.g.) 

PREPARE prep_insert_plan (int, char)
AS insert into prep1 values ($1, $2);
EXECUTE prep_insert_plan (1, 'one');
EXECUTE prep_insert_plan (2, 'two');
EXECUTE prep_insert_plan (3, 'three');
DEALLOCATE prep_insert_plan;

 

 

728x90