RainStar Story

MySql」select를 이용한 table 데이터 백업 이동 본문

Developer/PHP / MySql

MySql」select를 이용한 table 데이터 백업 이동

레인스타 2017. 11. 28. 20:03


테이블에 있는 데이터를 그대로 다른 테이블로 복사하는 간단한 방법입니다.

테이블 원본 그대로 이동시키는 방법과 특정컬럼을 선택하여 복사할 수 있습니다.

물론 조건 값을 설정해서 원하는 결과값만 복사할 수도 있습니다.


모든 방법은 테이블을 생성해 놓고 시작해야 합니다.


첫번째 테이블을 그대로 복사하는 방법으로 insert into 의 value 값을 select 테이블을 지정하는 형식입니다.

table1 의 데이터를 table2로 복사하는 쿼리는 아래와 같습니다.

INSERT INTO table2 SELECT * FROM table1

단, 새로생성한 table2와 데이터를 가져올 table1의 구조 및 컬럼속성이 동일해야 합니다.



두번째 특정 컬럼의 데이터만 복사하는 방법입니다.

테이블의 구조가 다르더라도 컬럼속성만 주의하면 원하는 데이터를 복사할 수 있습니다.

INSERT INTO table2 ('col1', 'col2', 'col3')

SELECT seq, id, pass FROM table1

각 컬럼의 속성이 같은지 체크하시고 진행하면 되겠습니다.



세번째 조건에 부합되는 결과값만 이동시키는 방법으로 where 조건만 걸어주면 됩니다.

INSERT INTO table2 ('col1', 'col2', 'col3')

SELECT seq, id, pass FROM table1 WHERE seq > '11'


예제 )

그누보드4 게시판 table -> 그누보드5 게시판 table

먼저 그누보드5에 신규 게시판을 생성합니다.

그누보드4와 그누보드5의 컬럼을 비교해보니 그누보드4에 있던 wr_trackback 컬럼이 그누보드5에는 없으며 추가된 컬럼이 몇개 있었습니다.

일단 그누보드4의 모든 컬럼을 다 가지고 있으니 wr_trackback 컬럼만 추가해 주면 손쉽게 끝낼 수 있겠네요.

새로 생성한 게시판 table에 wr_trackback 컬럼을 추가합니다.


데이터 복사 쿼리 --->

insert into `g5_write_online` (`wr_id`, `wr_num`, `wr_reply`, `wr_parent`, `wr_is_comment`, `wr_comment`, `wr_comment_reply`, `ca_name`, `wr_option`, `wr_subject`, `wr_content`, `wr_link1`, `wr_link2`, `wr_link1_hit`, `wr_link2_hit`, `wr_trackback`, `wr_hit`, `wr_good`, `wr_nogood`, `mb_id`, `wr_password`, `wr_name`, `wr_email`, `wr_homepage`, `wr_datetime`, `wr_last`, `wr_ip`, `wr_1`, `wr_2`, `wr_3`, `wr_4`, `wr_5`, `wr_6`, `wr_7`, `wr_8`, `wr_9`, `wr_10`, `wr_ccl`, `wr_singo`, `wr_zzal`, `wr_related`, `wr_comment_ban`, `wr_link_write`, `wr_contents_price`, `wr_contents_domain`, `wr_umz`, `wr_subject_font`, `wr_subject_color`, `wr_subject_bold`, `wr_anonymous`, `wr_comment_hide`, `wr_read_level`, `wr_kcb_use`, `wr_qna_status`, `wr_qna_point`, `wr_qna_id`, `wr_is_mobile`, `wr_google_map`, `wr_view_block`, `wr_auto_move`, `wr_link1_target`, `wr_link2_target`, `wr_contents_preview`, `wr_lightbox`, `wr_align`, `wr_to_id`, `wr_marketdb`, `wr_key_password`, `wr_hidden_link1`, `wr_hidden_link2`, `wr_rate`)

select * from `g4_write_online`



Query : insert into `g5_write_online` (`wr_id`, `wr_num`, `wr_reply`, `wr_parent`, `wr_is_comment`, `wr_comment`, `wr_comment_reply`, `c...


Error Code : 1136

Column count doesn't match value count at row 1


Execution Time : 00:00:00:000

Transfer Time  : 00:00:00:000

Total Time     : 00:00:00:000


두 테이블의 컬럼이 다르다면 위와 같은 메세지가 출력됩니다. 체크해보니 컬럼이 다르네요 두 테이블을 비교해가며 매칭되는 컬럼만 다시 정의했습니다.


INSERT INTO `g5_write_online` (

`wr_id`, 

`wr_num`, 

`wr_reply`, 

`wr_parent`, 

`wr_is_comment`, 

`wr_comment`, 

`wr_comment_reply`, 

`ca_name`, 

`wr_option`, 

`wr_subject`, 

`wr_content`, 

`wr_link1`, 

`wr_link2`, 

`wr_link1_hit`, 

`wr_link2_hit`, 

`wr_trackback`, 

`wr_hit`, 

`wr_good`, 

`wr_nogood`, 

`mb_id`, 

`wr_password`, 

`wr_name`,

`wr_email`,

`wr_homepage`,

`wr_datetime`,

`wr_last`,

`wr_ip`,

`wr_1`,

`wr_2`,

`wr_3`,

`wr_4`,

`wr_5`,

`wr_6`,

`wr_7`,

`wr_8`,

`wr_9`,

`wr_10`

)

SELECT * FROM g4_write_online


22207 row(s) affected, 30 warning(s)


Execution Time : 00:00:00:765

Transfer Time  : 00:00:00:000

Total Time     : 00:00:00:765


Note : To see complete list of warning(s), enable Tools -> Preferences -> General -> Show Warning(s) in Messages Tab


테이블 데이터 복사가 완료됬습니다.



Comments