[ Redshift ] MySQL과 쿼리 비교
전에 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;