우선 전달 된 값이 1차원 배열이라는 가정하에 소스입니다.

<if test="mbrIdList != null">

<foreach collection="mbrIdList" item="value" open="AND MBR_ID IN (" close=")" separator=",">

#{value}

</foreach>

</if>


해당 If문으로 한번 데이터가 있는지 확인 해서 처리 해야 합니다. 무조건 open에 있는것과 close에 있는 부분이 실행되어 쿼리 에러가 날 수 있습니다. 


collection  -> 1차 배열로 된 foreach문의 대상

item -> foreach문을 돌면서 순차적으로 collection에 있는 값이 출력될 객체명

open -> 해당 foreach문을 시작 전에 출력될 구문

close -> 해당 foreach문이 완료 되면 출력될 구문

separator -> 값을 출력 후 추가적으로 출력 되어야 할 문자(마지막엔 출력되지 않음)



감사합니다.

AFTER : 테이블에서만 작동하며, 해당 기준 테이블에 이벤트 이후 작동.

BEFORE : 테이블 / 뷰에서 사용가능하며, 해당 기준 테이블에서 이벤트 이전 작동


DELIMITER$$

CREATE TRIGGER [트리거 이름]

[AFTER|BEFORE] [INSERT | UPDATE | DELETE] ON [기준 테이블] 

FOR EACH ROW

BEGIN

[실행 할 쿼리]

END 

$$DELIMITER;




1. 데이터베이스 상에 FEDERATED 엔진(Engine)이 있는 확인

show engines;

2. 엔진(Engine) 없을 경우 설치 

install plugin federated soname 'ha_federated.so'

3. FEDERATED 엔진 설치가 잘 되었는지 확인

show engines;

4. 엔진 사용 할 수 있게 my.cnf에 추가

[mysqld]

federated

5. 엔진의 상태 확인 

show engines;

6. 원격지 테이블 생성

create table `remote_db`.`board` (

`tb_seq` integer not null AUTO_INCREMENT COMMENT '시퀀스',

`title` varchar(100) not null comment '제목',

`context` text null comment '내용'

PRIMARY KEY (`tb_seq`),

UNIQUE KEY `id_UNIQUE`(`id`)

)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='게시판'

7. 로컬 테이블 생성

create table `local_db`.`board` (

`tb_seq` integer not null AUTO_INCREMENT COMMENT '시퀀스',

`title` varchar(100) not null comment '제목',

`context` text null comment '내용'

PRIMARY KEY (`tb_seq`),

UNIQUE KEY `id_UNIQUE`(`id`)

)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='게시판'

CONNECTION='mysql://root:test@192.168.0.11:3306/remote_db/board';

8. 로컬에서 원격지의 Table을 로컬 테이블 처럼 사용 가능합니다. select, insert, update, delete 모두 가능 합니다.



1. mysql root 초기 패스워드(Password) 세팅(Setting)

mysqladmin -uroot -p password [설정할 패스워드]

2. 사용자 추가 및 권한 주기

grant all privileges on [데이터베이스명].* to [사용자명]@localhost identified by [비밀번호] with grant option;

flush privileges;

- CSV과 테이블 구조 동일

LOAD DATA LOCAL INFILE [FILE_PATH]

INTO TABLE [DB_NAME.TABLE_NAME] FIELDS TERMINATED BY ",";


테이블에 INDEX가 걸려 있는경우에는 해제 후 실행 권장하며, 해당 INDEX가 걸려 있는 경우 Import 시간이 더 오래 걸릴 수 있다. 


- CSV와 테이블 구조 다른 경우

LOAD DATA LOCAL INFILE [FILE_PATH]

INTO TABLE [DB_NAME.TABLE_NAME] FIELDS TERMINATED BY ","

ENCLOSED BY ""

LINES TERMINATED BY "\n"

(column1,column2,column3, ...);


+ Recent posts