Ekstrak satu tabel dari dump MySQL

Anda punya dump 7 GB berisi 127 tabel, tetapi secara lokal Anda hanya butuh tiga di antaranya — users, orders, products. Berikut alasan trik sed/grep biasa gagal, dan cara menarik persis tabel yang Anda mau (beserta foreign key-nya) dalam beberapa klik.

Tidak setiap pekerjaan membutuhkan seluruh database. Saat Anda membangun sebuah fitur secara lokal, Anda jarang ingin dump produksi penuh memenuhi disk dan butuh satu jam untuk diimpor. Anda hanya ingin segelintir tabel yang benar-benar disentuh fitur itu.

Hal yang sama berlaku saat Anda men-debug satu tabel — mereproduksi masalah data di orders tidak memerlukan 126 tabel lainnya — atau melakukan migrasi sebagian, ketika hanya beberapa tabel yang pindah ke layanan baru. Dalam semua kasus ini pertanyaannya sama: bagaimana caranya mendapatkan hanya tabel-tabel ini dari dump raksasa, dengan bersih dan cepat?

Pendekatan sed/grep dan mengapa gagal

Jawaban klasiknya adalah mengiris file dengan sed di antara header bagian yang ditulis mysqldump untuk setiap tabel:

# tarik tabel users dari file mysqldump
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql

Kelihatannya cerdik, dan pada dump yang kecil dan rapi mungkin bisa berhasil sekali. Pada file 7 GB sungguhan, cara ini berantakan dalam banyak hal yang halus:

Anda pun akhirnya menumpuk awk di atas grep di atas sed, menguji pada subset, dan tetap tidak memercayai hasilnya. Ada cara yang lebih baik.

Ekstrak tabel dengan DumpCleaner

DumpCleaner mem-parse dump dengan benar — memahami batas pernyataan, INSERT multi-baris, backtick, dan komentar — sehingga selalu memotong pada baris yang tepat. Mengekstrak tabel yang Anda butuhkan hanya butuh empat langkah:

  1. Seret dump .sql Anda ke dalam. DumpCleaner melakukan streaming file, jadi dump 7 GB terbuka dengan memori konstan alih-alih memuat semuanya.
  2. Baca daftar tabel yang terdeteksi otomatis. Setiap tabel di-parse dan didaftar beserta jumlah baris dan ukurannya — tidak perlu menggulir jutaan baris untuk menemukan isinya.
  3. Pilih tabel yang Anda mau. Centang users, orders, dan products, atau ketik pola regex / pengecualian seperti *_logs untuk membuang seluruh grup sekaligus.
  4. Sertakan induk foreign key dan ekspor. Secara opsional tarik tabel induk yang diacu secara otomatis, lalu ekspor file yang bersih dan siap diimpor.

Beberapa hal membuat ini jauh lebih tidak merepotkan dibanding alat shell:

Cukup tabel yang Anda butuhkan — tidak lebih

DumpCleaner mengekstrak tabel tertentu dari dump berukuran berapa pun — streaming, dengan memori konstan, dan dengan foreign key yang sudah diselesaikan untuk Anda. Aplikasi native macOS & iPadOS, sekali beli.

Unduh di App Store

Pertanyaan yang sering diajukan

Bisakah saya mengekstrak beberapa tabel sekaligus?

Ya. Centang sebanyak yang Anda mau — users, orders, dan products sekaligus — dan DumpCleaner menulis semuanya ke satu file dalam sekali proses.

Apakah dependensi foreign key tetap dipertahankan?

Secara opsional, ya. Aktifkan sertakan dependensi foreign key dan setiap tabel induk yang diacu oleh pilihan Anda ikut ditarik secara otomatis, sehingga hasil ekstrak terimpor tanpa error constraint.

Bisakah saya mengecualikan tabel berdasarkan pola?

Ya. Gunakan pola pengecualian seperti *_logs atau *_sessions, atau ekspresi reguler, untuk membuang seluruh grup tabel alih-alih menghapus centangnya satu per satu.

Apakah berfungsi dengan PostgreSQL?

Ya. DumpCleaner membaca dump MySQL, MariaDB, dan PostgreSQL (pg_dump), serta menangani nama berkualifikasi skema seperti public.users saat mengekstrak tabel.

Berhenti berkelahi dengan sed dan grep

Seret, pilih tabel Anda, ekspor. DumpCleaner menarik persis tabel yang Anda butuhkan — beserta foreign key-nya — dari dump mana pun.

Unduh di App Store