2010-05-12 7 views
1

2 개의 다른 데이터베이스 테이블 중 특정 행을 동기화하는 가장 좋은 방법을 찾으려고합니다. 따라서, 예를 들어 그래서, 데이터베이스 스키마가 모두 동일합니다 같은 다른 데이터베이스에서이 개 제품 테이블 ...MYSQL 레코드를 INSERT 문으로 검색하는 방법

원산지 데이터베이스

product{ 
    merchant_id, 
    product_id, 
    ... additional fields 
} 

대상 데이터베이스

product{ 
    merchant_id 
    product_id 
    ... additional fields 
} 

이 있습니다. 그러나 특정 merchant_id가있는 레코드를 선택하려면 해당 merchant_id가있는 대상 테이블에서 모든 레코드를 제거하고 해당 레코드를 동일한 merchant_id의 원본 데이터베이스의 레코드로 바꿉니다.

내 생각에는 mysqldump를 사용하여 create table 문을 구문 분석하고 Insert 문만 실행했다. 그래도 아픔처럼 보입니다. 그래서 나는 이것을 할 수있는 더 좋은 기술이 있는지 궁금해하고있었습니다.

mysql은 SELECT 문에서 출력으로 INSERT 문을 작성하는 방법이 있으므로 특정 레코드 정보를 새 db에 삽입하는 방법을 정의 할 수 있다고 생각합니다.

도움을 주시면 감사하겠습니다.

답변

1

phpMyAdmin에는 다음과 같은 기능이 있습니다. 쿼리를 실행 한 다음 해당 쿼리의 결과를 CREATE 문이 포함 된 파일로 내보낼 수 있습니다.

업데이트 : 그리고 mysqldump 너무 그것을 가지고 Link

mysqldump -u username -p --where="id='merchant_id'" databasename 

상인 ID를 교체에 관해서, 그 부분은 내가 아직 완전히 이해하지 않습니다. 수동 검색 + 바꾸기가 더 좋습니다. 그러한 두 가지 레코드의 실제 예를 만들 수 있습니까?

+0

그래, 난 그 기능을 가지고 알았어, 내가 슬리머 솔루션을 찾고 있었는데, 다른 모든 현명한 파일을 통해 모든 CREATE TABLE 문을 제거해야 구문. INSERT 문만 가져 오는 메서드가있을 수 있다고 생각했습니다. – Aglystas

+1

@Aglystas 왜 '--no-create-info'를 사용하여 CREATE TABLE을 제거하지 않습니까? http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_no-create-info –

관련 문제