반응형

쿼리

월별 테이블을 만들기 위해 Batch에서 처리하는 쿼리

이미 생성 된 테이블이 있는 지 확인

인덱스 포함 하여 테이블 복사(데이터제외)

CREATE TABLE IF NOT EXISTS newTableName
LIKE targetTableName;

 

 

@Scheduled

매월 1일 실행

@Scheduled(cron = "0 0 0 1 * *")

 

현재일 기준 다음달 테이블 생성

테이블명_년월형식의 테이블명 생성하여 파라미터로 전달

Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.MONTH, 1);
DateFormat df = new SimpleDateFormat("yyyyMM");

String newTableName =  "TABLE_NAME_" + df.format(cal.getTime());

 

MyBatis

반드시 "$" 키워드 사용 할 것 

"#" 키워드는 큰따옴표가 포함됨

<update id="createNewTable">
CREATE TABLE IF NOT EXISTS ${newTableName}
LIKE ${targetTableName}
</update>

 

다른 예) 인덱스 포함하지 않고 테이블 복사(데이터제외)

CREATE TABLE IF NOT EXISTS ${newTableName}
SELECT * FROM ${targetTableName} WHERE 1=2;

 

 

728x90
반응형

'DB' 카테고리의 다른 글

[Mariadb] SUM이 null 일 때 0 처리  (0) 2022.09.26

+ Recent posts