MySQL 덤프에서 단일 테이블 추출하기

테이블 127개가 든 7GB 덤프가 있지만, 로컬에서는 그중 셋 users, orders, products만 필요합니다. 흔히 쓰는 sed/grep 트릭이 깨지는 이유, 그리고 원하는 테이블만 (외래 키까지) 몇 번의 클릭으로 정확히 뽑아내는 방법을 살펴봅니다.

모든 작업에 데이터베이스 전체가 필요한 것은 아닙니다. 로컬에서 기능을 개발할 때, 전체 운영 덤프로 디스크를 가득 채우고 가져오는 데 한 시간을 쓰고 싶은 경우는 드뭅니다. 그 기능이 실제로 건드리는 몇 개의 테이블만 원할 뿐입니다.

단일 테이블을 디버깅할 때도 마찬가지입니다. orders의 데이터 문제를 재현하는 데 나머지 126개 테이블이 필요하지 않습니다. 또는 몇 개 테이블만 새 서비스로 옮기는 부분 마이그레이션도 그렇습니다. 이 모든 경우에서 질문은 같습니다. 거대한 덤프에서 이 테이블들만을 어떻게 깔끔하고 빠르게 뽑아낼까요?

sed/grep 방식과 그것이 깨지는 이유

고전적인 답은 mysqldump가 각 테이블마다 기록하는 섹션 헤더 사이를 sed로 잘라내는 것입니다:

# mysqldump 파일에서 users 테이블 뽑아내기
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql

영리해 보이고, 작고 깔끔한 덤프에서는 한 번쯤 동작할 수도 있습니다. 하지만 실제 7GB 파일에서는 여러 미묘한 지점에서 무너집니다:

결국 grep 위에 sed, 그 위에 awk를 쌓고, 부분집합으로 테스트하면서도 여전히 결과를 믿지 못하게 됩니다. 더 나은 방법이 있습니다.

DumpCleaner로 테이블 추출하기

DumpCleaner는 덤프를 제대로 파싱합니다. 문장 경계, 여러 줄 INSERT, 백틱, 주석을 이해하므로 항상 올바른 줄에서 자릅니다. 필요한 테이블을 추출하는 데 네 단계면 됩니다:

  1. .sql 덤프를 끌어다 놓습니다. DumpCleaner는 파일을 스트리밍하므로 7GB 덤프도 전체를 로드하는 대신 일정한 메모리로 열립니다.
  2. 자동 감지된 테이블 목록을 봅니다. 모든 테이블이 파싱되어 행 수와 크기와 함께 나열됩니다. 무엇이 있는지 찾으려고 수백만 줄을 스크롤할 필요가 없습니다.
  3. 원하는 테이블을 고릅니다. users, orders, products를 체크하거나, *_logs 같은 정규식 / 제외 패턴을 입력해 그룹 전체를 한 번에 제외합니다.
  4. 외래 키 부모를 포함하고 내보냅니다. 원한다면 참조되는 부모 테이블을 자동으로 함께 가져온 뒤, 깔끔하고 가져올 수 있는 파일을 내보냅니다.

몇 가지 기능이 셸 도구보다 훨씬 덜 번거롭게 만들어 줍니다:

필요한 테이블만 — 그 외에는 아무것도

DumpCleaner는 크기에 상관없이 덤프에서 특정 테이블을 추출합니다. 스트리밍 방식으로 일정한 메모리를 쓰며, 외래 키까지 대신 해결해 줍니다. 네이티브 macOS & iPadOS 앱, 한 번 구매로 끝.

App Store에서 다운로드

자주 묻는 질문

여러 테이블을 한 번에 추출할 수 있나요?

네. 원하는 만큼 테이블을 체크하세요. users, orders, products를 함께요. DumpCleaner가 한 번의 처리로 모두 하나의 파일에 씁니다.

외래 키 의존 관계를 유지하나요?

원한다면요. 외래 키 의존 관계 포함을 켜면 선택한 테이블이 참조하는 부모 테이블이 자동으로 함께 들어옵니다. 그래서 추출한 파일이 제약 조건 오류 없이 가져와집니다.

패턴으로 테이블을 제외할 수 있나요?

네. *_logs*_sessions 같은 제외 패턴 또는 정규식을 사용해, 테이블을 하나씩 체크 해제하는 대신 그룹 전체를 제외하세요.

PostgreSQL에서도 동작하나요?

네. DumpCleaner는 MySQL, MariaDB, PostgreSQL(pg_dump) 덤프를 읽으며, 테이블을 추출할 때 public.users 같은 스키마 한정 이름을 처리합니다.

sed와 grep과 씨름하지 마세요

끌어다 놓고, 테이블을 고르고, 내보내기. DumpCleaner는 어떤 덤프에서든 필요한 테이블만 외래 키와 함께 정확히 뽑아냅니다.

App Store에서 다운로드