Cara membuka fail dump SQL besar pada Mac (tanpa ranap)

Anda klik dua kali eksport .sql 20–50 GB dan editor anda berpusing, membeku, kemudian mati. Anda tak dapat pun membuka fail itu — apatah lagi mengeluarkan satu jadual yang membengkak. Ini sebab editor tercekik, penyelesaian baris arahan, dan cara yang lebih pantas.

Dump pangkalan data pengeluaran boleh dengan mudah mencapai puluhan gigabait. Sebaik sahaja anda cuba membukanya dalam editor teks biasa, kipas Mac anda berpusing laju, bebola pantai muncul, dan akhirnya aplikasi itu berhenti — kadangkala membawa kerja yang belum disimpan dalam tetingkap lain bersamanya.

Mengapa editor tercekik dengan dump besar

VS Code, TextEdit, Sublime Text dan seangkatannya direka untuk memuatkan keseluruhan fail ke dalam memori supaya ia boleh menatal, mencari dan menyerlahkan dengan pantas. Itu memadai untuk fail sumber 2 MB. Untuk dump 40 GB pula, ia bermakna editor cuba memperuntukkan 40 GB (tambah lebihan untuk struktur data dalamannya) dalam RAM.

Mac anda mempunyai 16 atau 32 GB. Jauh sebelum fail itu dimuatkan sepenuhnya, sistem kehabisan memori fizikal, mula menukar ke cakera (swapping), dan menjadi tersekat sama sekali. Kebanyakan editor juga menolak terus: VS Code mengehadkan fail pada sekitar 50 MB untuk editor penuh lalu bertukar kepada mod ringkas, TextEdit sekadar tergantung, dan Sublime memperuntukkan memori sehingga ia ranap. Walaupun anda berjaya membuka fail itu, penyerlahan sintaks dan carian akan mengimbas semula gigabait pada setiap tekanan kekunci.

Masalah teras: alat-alat ini mengandaikan capaian rawak kepada keseluruhan dokumen. Dump tidak memerlukan itu — ia hanyalah senarai penyata yang berjujukan. Anda cuma perlu menstrim menerusinya.

Cara baris arahan

Alat Unix pada Mac anda memang sudah menstrim, jadi ia tidak pernah memuatkan keseluruhan fail. Ini pilihan pertama yang klasik:

# Intai baris pertama dan terakhir tanpa membuka keseluruhan fail
head -n 50 dump.sql
tail -n 50 dump.sql

# Pecahkan dump kepada ketulan 100 MB bernama part_aa, part_ab, ...
split -b 100m dump.sql part_

# Keluarkan blok satu jadual antara dua penanda
sed -n '/CREATE TABLE `users`/,/UNLOCK TABLES/p' dump.sql > users.sql

Ini berfungsi, tetapi ia rapuh dan memenatkan. split -b memotong pada sempadan bait mentah, jadi ia akan mengerat terus di tengah-tengah penyata INSERT — ketulan yang terhasil bukan SQL yang sah dengan sendirinya. Muslihat julat sed bergantung pada penanda tepat yang kebetulan dikeluarkan oleh alat dump tertentu; tukar versi MySQL atau beralih ke PostgreSQL dan corak itu tidak lagi sepadan. Dan tiada satu pun daripadanya memberi anda pandangan tentang apa yang sebenarnya ada dalam fail — anda cuma meneka jadual mana yang bersaiz 30 GB itu sebelum anda dapat menyasarkannya.

Buka dan tapis dengan DumpCleaner

DumpCleaner dibina khas untuk saiz fail sebegini. Ia menstrim dump sepertimana baris arahan, tetapi ia memahami struktur SQL, jadi anda mendapat senarai jadual yang sebenar serta output yang selamat dan peka-penyata:

  1. Seret fail masuk. DumpCleaner membuka dump dengan menstrimnya dalam ketulan ~1 MB — fail 50 GB dibuka dengan lebih kurang 50 MB RAM, jadi tiada apa yang membeku.
  2. Lihat setiap jadual. Ia mengimbas dump dan menyenaraikan setiap jadual dengan saiznya, jadi anda serta-merta mengenal pasti jadual yang membengkakkan fail itu.
  3. Nyahpilih apa yang anda tidak perlukan. Nyahtanda jadual log, sesi atau analitik yang gergasi. DumpCleaner mengekalkan penyata utuh — tiada INSERT yang terkerat separuh.
  4. Eksport. Tulis fail .sql baharu yang lebih kecil yang akhirnya dibuka dan diimport dengan selesa. Fail asal anda tidak pernah diubah suai.

Kerana ia memproses dump 50 GB dan lebih besar dengan memori malar, anda langsung tidak perlu memikirkan tentang RAM Mac anda. Dan oleh sebab ia membaca sumber dan menulis output yang berasingan, dump yang anda mulakan tadi kekal sebagaimana adanya.

Buka dump yang editor anda tidak mampu

DumpCleaner menstrim dump SQL sebarang saiz dengan memori malar — tiada ranap, tiada swap, tiada menunggu. Seret masuk fail 50 GB, buang jadual yang anda tidak perlukan, eksport yang lebih kecil. Aplikasi asli macOS & iPadOS, pembelian sekali sahaja.

Muat turun di App Store

Soalan lazim

Sebesar mana dump SQL yang boleh dikendalikan DumpCleaner?

Tiada had tetap. Ia memproses fail sebagai strim dalam ketulan kecil, jadi dump 50 GB dan lebih besar berfungsi seperti yang kecil — saiznya dibatasi oleh cakera anda, bukan RAM anda.

Adakah DumpCleaner memuatkan keseluruhan fail ke dalam RAM?

Tidak. Berbeza dengan editor teks, ia membaca dump dalam ketulan kecil dan mengekalkan memori lebih kurang malar pada sekitar 50 MB, sama ada fail itu 200 MB atau 50 GB.

Bolehkah saya memecahkan dump mengikut jadual?

Ya. Berbanding split yang memotong secara membuta pada sempadan bait, DumpCleaner memahami struktur jadual. Nyahpilih jadual yang anda tidak mahu dan eksport fail bersih dengan hanya jadual yang anda simpan.

Adakah DumpCleaner mengubah suai fail asal saya?

Tidak. Dump sumber hanya dibaca — DumpCleaner sentiasa menulis fail baharu, jadi fail asal anda kekal tidak tersentuh.

Berhenti bergelut dengan editor anda

Seret masuk dump gergasi itu, buang jadual yang anda tidak perlukan, eksport fail yang benar-benar boleh dibuka. DumpCleaner mengendalikan sebarang saiz dengan memori malar.

Muat turun di App Store