본문 바로가기
Database

MySQL -> PostgreSQL (MySQL을 PostgreSQL로 변환)

by diaryDev 2024. 7. 19.
728x90
Mysql Postgresql
ifnull(컴럼명) coalesce(컬럼명)
DATE_FORMAT(NOW(), '%Y%m%d%H%i%s') to_char(now(), 'yyyymmddhh24miss')
DATE_FORMAT(t1.col, '%Y-%m-%d') concat(substring(t1.col,1,4),'-',substring(t1.col,5,2), '-', substring(t1.col,7,2))
DATE_FORMAT(now(), '%Y%m%d') to_char(now(), 'yyyymmdd')
LIMIT ${startNo}, ${pageSize} limit ${pageSize} offset ${startNo}
trs_dd = DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 MONTH),'%Y%m00') trs_dd = concat(substring(to_char(NOW() + INTERVAL '-1 MONTH',
 'yyyymmdd'), 1, 6), '00')
FORMAT(sum(t1.use_cnt),0) as use_cnt to_char(sum(t1.use_cnt), '999,999,999,999') as use_cnt
DATE_FORMAT(date_add(STR_TO_DATE((select max(hist_occr_seq_no) from TB_AG011H ag011h),'%Y%m%d%H%i%s'),interval +1 second), '%Y%m%d%H%i%s') select to_char(to_timestamp((select max(hist_occr_seq_no) from tb_ag011h tah), 'yyyymmddhh24miss') + interval '+1 second', 'yyyymmddhh24miss')
FORMAT(coalesce(sum(api_use_cnt),0),0) as api_use_cnt to_char(coalesce(sum(api_use_cnt),0),'9,999,999,999') as api_use_cnt

 

 

Mysql에서 자동으로 숫자가 증가하는 auto_increment가 있을 경우

Postgre에서는 insert문 작성시 직접 값을 넣어야 한다..

 

디비버 사용시 아래와 같이 DDL문장은

해당 테이블 오른쪽 클릭 > SQL 생성 > DDL 하면 나온다.

 

 

예)

CREATE TABLE `tb_am005m` (
  `api_id_cd` varchar(10) COLLATE utf8_bin NOT NULL COMMENT 'api id코드',
  `trs_gbn` varchar(1) COLLATE utf8_bin NOT NULL COMMENT '거래구분',
  `polic_cd` int(10) NOT NULL AUTO_INCREMENT COMMENT '정책코드      ',
  `polic_apply_dd` varchar(8) COLLATE utf8_bin NOT NULL COMMENT '정책적용일자',
  `polic_expir_dd` varchar(8) COLLATE utf8_bin DEFAULT NULL COMMENT '정책 만료일자',
  `sch_tx_bas_amt` int(9) DEFAULT 0 COMMENT '정기 건당기본금액',
  `sch_tx_dc_amt` int(9) DEFAULT 0 COMMENT '정기 건당경감금액',
  `nsch_tx_bas_amt` int(9) DEFAULT 0 COMMENT '비정기 건당기본금액',
  `nsch_tx_dc_amt` int(9) DEFAULT 0 COMMENT '비정기 건당경감금액',
  `frst_reg_id` varchar(20) COLLATE utf8_bin NOT NULL COMMENT '최초등록id',
  `frst_reg_dttm` varchar(14) COLLATE utf8_bin NOT NULL COMMENT '최초등록일시',
  `last_proc_id` varchar(20) COLLATE utf8_bin NOT NULL COMMENT '최종처리id',
  `last_proc_dttm` varchar(14) COLLATE utf8_bin NOT NULL COMMENT '최종처리일시',
  `last_proc_pgm_id` varchar(100) COLLATE utf8_bin NOT NULL COMMENT '최종처리프로그램id',
  PRIMARY KEY (`api_id_cd`,`trs_gbn`,`polic_cd`),
  UNIQUE KEY `polic_cd` (`polic_cd`)
) ENGINE=InnoDB AUTO_INCREMENT=106 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='api 정산정책기본';

 

아래 그림과 같이 Postgre DB에서 Sequences에 해당 테이블을 추가

insert문에도 추가

 

<insert id="insertDataCalculate" parameterType="java.util.HashMap">
        INSERT INTO tb_am005m(
            api_id_cd,
            trs_gbn,
            polic_cd,
            polic_apply_dd,
            <if test="polic_expir_dd != null">
            polic_expir_dd,
            </if>
            sch_tx_bas_amt,
            sch_tx_dc_amt,
            nsch_tx_bas_amt,
            nsch_tx_dc_amt,
            frst_reg_id,
            frst_reg_dttm,
            last_proc_id,
            last_proc_dttm,
            last_proc_pgm_id)
        VALUES (
            #{api_id_cd},
            #{trs_gbn},
            nextval('seq_tb_am005m'),
            #{polic_apply_dd},
            <if test="polic_expir_dd != null">
                #{polic_expir_dd},
            </if>
            #{sch_tx_bas_amt},
            #{sch_tx_dc_amt},
            #{nsch_tx_bas_amt},
            #{nsch_tx_dc_amt},
            #{frst_reg_id},
            to_char(now(), 'yyyymmddhh24miss'),
            #{last_proc_id},
            to_char(now(), 'yyyymmddhh24miss'),
            #{last_proc_pgm_id})
            <selectKey resultType="int" keyProperty="polic_cd" order="AFTER">
                SELECT LAST_INSERT_ID()
            </selectKey>
    </insert>

728x90

'Database' 카테고리의 다른 글

Redis 명령어  (0) 2024.07.26
Redis 설치 및 실행 테스트  (0) 2024.07.24
[Oracle DB] LIKE / ESCAPE  (1) 2024.07.14
[MySQL] LIMIT, OFFSET  (0) 2024.07.13
MS SQL, Oracle DB, MySQL 현재 일시  (0) 2024.07.11