답변:
skaffman이 말했듯이 --where 옵션을 사용하십시오 .
mysqldump --opt --where="1 limit 1000000" database
물론, 그것은 당신에게 모든 테이블에서 처음 백만 행을 줄 것입니다.
SELECT * from table WHERE
경우 얻을 수 SELECT * from table WHERE 1 limit 1000000
있습니다. 1이 없으면 유효하지 않은 쿼리가 있습니다. where 절에 1을 지정하면 (1이 항상 true이므로) 모든 레코드를 선택합니다.
mysqldump --opt --where="1 limit 1000000 offset 1000000" --no-create-info database
하여 백만 개의 레코드 중 두 번째 페이지를 얻을 수 있습니다 . 첫 페이지 이외의 페이지 에서 --no-create-info 플래그 를 사용하여 데이터 만 덤프하고 테이블 작성 항목을 제거하십시오 .
n
특정 테이블에서 레코드 를 얻으려면 다음과 같이 할 수 있습니다.
mysqldump --opt --where="1 limit 1000000" database table > dump.sql
이것은 파일로 1000000
명명 table
된 테이블에서 첫 번째 행을 덤프 합니다 dump.sql
.
기본 순서는 ASC이므로이 상황에서는 거의 필요하지 않으므로 DESC를 즉시 사용할 수 있도록 적절한 데이터베이스 디자인이 필요합니다. 모든 테이블에 동일한 이름 (자연 또는 대리)을 가진 하나의 기본 키 열이있는 경우 다음을 사용하여 n 개의 최신 레코드를 쉽게 덤프 할 수 있습니다.
mysqldump --opt --where="1 ORDER BY id DESC limit 1000000" --all-databases > dump.sql
이것이 연관 테이블에서도 항상 PK ID 의 이름을 지정 하고 복합 PK를 피해야 하는 완벽한 이유입니다 (대신 키를 대신 사용).