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:
- INSERT multi-baris. Satu
INSERT INTO ... VALUESbisa membentang ribuan baris. Alat berbasis baris sepertiseddangrepmemotong baris-baris itu di tengah dan menghasilkan file yang tidak dapat di-parse. - Backtick dan karakter khusus. Nilai kolom mengandung
--, titik koma, backtick, tanda kutip, dan baris baru di dalam string. Pola Anda cocok dengan teks di dalam data yang tidak pernah dimaksudkan sebagai pembatas. - Nama tabel sebagai substring. Mengekstrak
userjuga menangkapuser_roles,user_sessions, danpassword_user, karena namanya muncul sebagai substring dari yang lain. - Komentar dan header bergeser. Teks komentar persisnya berbeda antar versi MySQL, MariaDB, dan PostgreSQL, dan
pg_dumpsama sekali tidak memakai header yang sama — sehingga perintah yang sama diam-diam tidak mengembalikan apa pun. - Tidak sadar foreign key. Bahkan jika Anda mengiris
ordersdengan sempurna, baris-barisnya mengacu keusers.sedtidak tahu itu, jadi hasil ekstrak gagal diimpor dengan error foreign key.
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:
- Seret dump
.sqlAnda ke dalam. DumpCleaner melakukan streaming file, jadi dump 7 GB terbuka dengan memori konstan alih-alih memuat semuanya. - 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.
- Pilih tabel yang Anda mau. Centang
users,orders, danproducts, atau ketik pola regex / pengecualian seperti*_logsuntuk membuang seluruh grup sekaligus. - 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:
- Pola pengecualian seperti
*_logsatau*_sessionsmembuang noise audit dan sesi tanpa perlu menghapus centang lusinan tabel secara manual. - Filter regex memungkinkan Anda mencocokkan berdasarkan awalan, akhiran, atau pola apa pun — misalnya pertahankan semua yang cocok dengan
shop_*. - Pratinjau langsung menampilkan persis tabel mana yang akan masuk ke output saat Anda mengubah pilihan.
- Perkiraan ukuran output memberi tahu seberapa besar hasil ekstrak sebelum Anda mengekspor, jadi Anda tahu akan muat secara lokal.
- Dependensi foreign key dapat disertakan secara otomatis, jadi memilih
ordersdiam-diam ikut membawausersdan hasil ekstrak terimpor tanpa error constraint.
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 StorePertanyaan 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