2011-01-12 4 views
1

"where 절"을 사용하여 하나의 테이블을 덤프 할 수 있지만 테이블에 덤프를 할 수 있는지, 그리고 테이블에 덤프 할 수 있는지 궁금 해서요. 특정 계좌 ID?참조 무결성을 사용하여 where 절이있는 mysqldump

내 모든 테이블은 innodb이며 계단식 삭제와 함께 외래 키 제약 조건을 사용하여 설정되었습니다. account_id = 1 인 주 테이블 "account"를 삭제하면 "1"의 account_id에 링크 된 모든 레코드도 삭제됩니다.

그래서 내가 원하는 것은 비슷한 개념입니다. 하나의 명령에서 "account"테이블에 링크 된 모든 테이블에서 "Account_id = 1"에 대한 모든 데이터를 덤프하려고합니다.

mysqldump -t -u [username] -p test account --where="account_id = 1"

절은 자동으로 테이블을 좋아의 데이터를 덤프 경우 별도 작성할 필요없이 함께 테이블에 덤프하는 또 다른 방법이 있나요 : 나는 다음과 같은 명령을 할 경우 나는 단지 하나 개의 테이블을 덤프 생각 각 테이블에 대한 덤프 명령? 궁극적으로 저는 "account_1.sql", account_2.sql 등과 같은 각 계정에 대해 .sql 파일을 만들고 싶습니다.

답변

0

나는이 아이디어를 내가 좋아하는 목록에 넣어 누군가가 아이디어를 가지고 있는지 확인했다. 아무도 예상하지 못했던 것처럼.

재미있는 방법 중 하나는 DB를 복제하고 필요하지 않은 계정 아이디 (모든 테이블에 대해 삭제가 삭제됨)를 삭제 한 다음 나머지 (필요한 모든 계정 ID가됩니다)를 덤프하는 것입니다.

MySQL과 DBIx :: Class (Perl의 ORM)에서 같은 문제가 발생했습니다. 내가하고 싶었던 것은 1000 개의 계정 (난독 화 된 이름과 이메일)을 복제하는 것이 었습니다. 주어진 사용자 ID의 외래 키를 통해 전체 데이터베이스를 탐색하고 필요한 모든 insert 문을 적절한 순서로 생성하는 스크립트를 작성했습니다.

관련 문제