AAA DB의 특정테이블의 정보를 BBB DB로 옮기는 쿼리는 어떻게 해야할까요?
본문
두개 db에 접속을 해야할텐데..
// 1. 연결 : mysql_connect(호스트명, 아이디, 비밀번호)
$connA = mysql_connect('localhost', 'abc', 'ne.co'); //db 연결부분
$connB = mysql_connect('localhost', 'bbc', 'eo.co'); //db 연결부분
// 2. DB 선택 : mysql_select_db(해당 db명, $conn)
$srcDB = mysql_select_db("AAA", $connA);
mysql_query('set names utf8');
$tarDB = mysql_select_db("BBB", $connB);
mysql_query('set names utf8');
// DB에 table 쿼리(query 질의).
$srcTable = "g5_write_aa"; // source 테이블
$tarTable = "g5_write_bb"; // target 테이블
아래 쿼리는 하나의 DB에서 특정 필들의 데이타를 다른 테이블로 옮길 때 사용했던건데요
DB가 두개라서, srcDB와 tarDB를 두개 모두 접속을 해야하는데
쿼리는 어떻게 해야할지?
$sql = "insert into $tarTable (wr_subject, wr_content, wr_option, mb_id, wr_name, wr_datetime, wr_hit ) (select wr_subject, wr_content, wr_option, mb_id, wr_name, now(), wr_hit from $srcTable where wr_id =1231 " ;
mysql_query($sql, $connB);
답변 3
php 로 하려면 AAA.g5_write_aa 를 모두 읽어와 루프 돌면서 BBB.g5_write_bb에 일일이 한레코드씩 넣어줘야 합니다.
터미널에 접속 가능하고 AAA, BBB 모두 접근 가능하다면
insert into BBB.g5_write_bb select * from AAA.g5_write_aa
이런식으로 넣을수있습니다.
디비이전이 목적이 아니라
위 기능을 php (웹기능) 으로 구현을 해야하나요?
같은서버에 디비계정만 다를경우는 한번의 쿼리로 가능하지만
서버가 다른경우는 작업도 코딩도 난해할거같네요.
여러방법이 있겠지만
aaa서버에 디비 내용을 뿌려주고 for문 안에서
bbb서버 로 연결된 디비에 insert 해줘야할듯
물론 bbb서버 커넥션은 for문 위에다 선언합니다.
글을쓰다보니 위에 k찰스님 답변하고 같네요..
* 구현하는 이유가 있겠지만 업무적으로 접근하면,
디비이전이 목적이 아닐까싶습니다.. 질문하신 내용의 기능은 1회성으로 동작하는 기능으로 보여지며
서비스페이지로는 적합하지않습니다.
잘 사용하지않는 방법입니다. 물론 test나 다른이유가 있으면 지금 멘트는 무시해주세요~
디비이전이 목적이라면 더 쉬운방법으로 접근하실수있습니다.