2012-04-20 1 views
4

MySQL 데이터베이스를 사용하고 있습니다.MySQL의 경우 한 테이블에서 행 세트를 덤프하고 모든 관련 테이블의 모든 관련 (외래 키로) 행을 덤프하는 도구가 있습니까?

한 테이블에서 행 집합을 덤프하고이 행에 다른 테이블의 행을 가리키는 foriegn 키가있는 경우 해당 테이블을 덤프하려고합니다.

그런 다음이 덤프를 다른 데이터베이스의 각 테이블에로드하려고합니다 (예 : LOAD DATA INFILE 명령 사용). 따라서 select...join...into outfile을 사용하는 것만으로는 충분하지 않습니다. 결과가 하나의 큰 조인 된 테이블이되기 때문입니다.

예를 들어 테이블 A에는 테이블 B와 C의 행을 각각 가리키는 B_id와 C_id 열이 있습니다. 그래서 테이블 A에서 3 개의 행을 버리면 B의 3 개의 관련 행과 C의 3이 버려집니다.

그런 도구/스크립트가 존재합니까?

그런 일을하는 스크립트를 작성하는 것은 매우 어렵지 만, 그런 도구가 이미 존재한다면 바퀴를 재발 명하고 싶지는 않습니다.

답변

0

나의 제안 :

  1. 는 수출을 위해 임시 테이블을 생성, 예를 들어, A_export, B_export, C_export 등이 있습니다.
  2. 이러한 새 테이블을 내보내려는 행으로 채 웁니다. 지원되는 테이블 B, C, ... A_export의 조인 쿼리를 사용하면 더 쉽게 사용할 수 있습니다.
  3. 은 mysqldump는 이러한 테이블을 덤프
  4. 가져 오기 DB
  5. 대상 DB에있는 테이블의 이름을 변경 대상에 결과 덤프 파일 제거 "_export"접미사
관련 문제