Ekstrak satu jadual daripada dump MySQL

Anda mempunyai dump 7 GB dengan 127 jadual, tetapi secara setempat anda hanya perlukan tiga daripadanya — users, orders, products. Ini sebab muslihat sed/grep biasa gagal, dan cara menarik keluar tepat jadual yang anda mahu (berserta kunci asingnya) dalam beberapa klik.

Bukan setiap kerja memerlukan keseluruhan pangkalan data. Apabila anda membina ciri secara setempat, jarang sekali anda mahu dump pengeluaran penuh memenuhi cakera anda dan mengambil masa sejam untuk diimport. Anda mahu segelintir jadual yang benar-benar disentuh oleh ciri itu.

Perkara yang sama berlaku apabila anda sedang menyahpepijat satu jadual — mengeluarkan semula isu data dalam orders tidak memerlukan 126 jadual yang lain — atau melakukan migrasi separa, di mana hanya beberapa jadual berpindah ke perkhidmatan baharu. Dalam kesemua kes ini soalannya sama: bagaimana saya mendapatkan hanya jadual-jadual ini daripada dump gergasi, dengan bersih dan pantas?

Pendekatan sed/grep dan mengapa ia gagal

Jawapan klasik ialah mengerat fail dengan sed antara pengepala bahagian yang ditulis mysqldump untuk setiap jadual:

# tarik keluar jadual users daripada fail mysqldump
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql

Ia kelihatan bijak, dan pada dump kecil yang kemas ia mungkin berjaya sekali. Pada fail 7 GB sebenar ia berkecai dalam banyak cara yang halus:

Anda berakhir dengan menimbun awk atas grep atas sed, menguji pada subset, namun masih tidak mempercayai hasilnya. Ada cara yang lebih baik.

Ekstrak jadual dengan DumpCleaner

DumpCleaner menghurai dump dengan betul — ia memahami sempadan penyata, INSERT berbilang baris, backtick dan komen — jadi ia sentiasa mengerat pada baris yang betul. Mengekstrak jadual yang anda perlukan mengambil empat langkah:

  1. Seret dump .sql anda masuk. DumpCleaner menstrim fail itu, jadi dump 7 GB dibuka dengan memori malar dan bukan memuatkan keseluruhannya.
  2. Baca senarai jadual yang dikesan automatik. Setiap jadual dihuraikan keluar dan disenaraikan dengan bilangan baris serta saiznya — tiada menatal berjuta-juta baris untuk mencari apa yang ada.
  3. Pilih jadual yang anda mahu. Tandakan users, orders dan products, atau taip corak regex / pengecualian seperti *_logs untuk membuang seluruh kumpulan sekali gus.
  4. Sertakan induk kunci asing dan eksport. Secara pilihan, tarik masuk jadual induk yang dirujuk secara automatik, kemudian eksport fail yang bersih dan boleh diimport.

Beberapa perkara menjadikan ini jauh kurang menyusahkan berbanding alat shell:

Hanya jadual yang anda perlukan — tiada yang lain

DumpCleaner mengekstrak jadual tertentu daripada dump sebarang saiz — secara penstriman, dengan memori malar, dan dengan kunci asing diselesaikan untuk anda. Aplikasi asli macOS & iPadOS, pembelian sekali sahaja.

Muat turun di App Store

Soalan lazim

Bolehkah saya mengekstrak berbilang jadual sekali gus?

Ya. Tandakan seberapa banyak jadual yang anda suka — users, orders dan products bersama-sama — dan DumpCleaner menulis kesemuanya ke dalam satu fail dalam satu laluan.

Adakah ia mengekalkan kebergantungan kunci asing?

Secara pilihan, ya. Hidupkan sertakan kebergantungan kunci asing dan mana-mana jadual induk yang dirujuk oleh pilihan anda akan ditarik masuk secara automatik, jadi ekstrak itu diimport tanpa ralat kekangan.

Bolehkah saya mengecualikan jadual mengikut corak?

Ya. Gunakan corak pengecualian seperti *_logs atau *_sessions, atau ungkapan biasa (regex), untuk membuang seluruh kumpulan jadual dan bukan menyahtandanya satu demi satu.

Adakah ia berfungsi dengan PostgreSQL?

Ya. DumpCleaner membaca dump MySQL, MariaDB dan PostgreSQL (pg_dump), dan mengendalikan nama berkelayakan skema seperti public.users semasa mengekstrak jadual.

Berhenti bergelut dengan sed dan grep

Seret, pilih jadual anda, eksport. DumpCleaner menarik keluar tepat jadual yang anda perlukan — berserta kunci asingnya — daripada sebarang dump.

Muat turun di App Store