Як відкрити великий SQL-дамп на Mac (без збоїв)

Ви двічі клікаєте по експорту .sql на 20–50 ГБ, і ваш редактор крутиться, зависає, а потім помирає. Ви навіть не можете відкрити файл — не кажучи вже про видалення однієї роздутої таблиці. Ось чому редактори задихаються, обхідні шляхи в командному рядку і швидший спосіб.

Дамп продакшн-бази даних легко може досягати десятків гігабайтів. Щойно ви спробуєте відкрити його у звичайному текстовому редакторі, кулер вашого Mac розкручується, з'являється «крутілка», і зрештою застосунок вилітає — іноді забираючи незбережену роботу в інших вікнах.

Чому редактори задихаються на великих дампах

VS Code, TextEdit, Sublime Text та їм подібні спроектовані завантажувати увесь файл у пам'ять, щоб миттєво прокручувати, шукати й підсвічувати. Це нормально для файлу вихідного коду на 2 МБ. Для дампу на 40 ГБ це означає, що редактор намагається виділити 40 ГБ (плюс накладні витрати на внутрішні структури даних) в оперативній пам'яті.

У вашого Mac 16 чи 32 ГБ. Задовго до того, як файл повністю завантажиться, система вичерпує фізичну пам'ять, починає скидати дані на диск і зупиняється. Більшість редакторів також прямо відмовляються: VS Code обмежує файли приблизно 50 МБ для повного редактора й переходить у спрощений режим, TextEdit просто зависає, а Sublime виділяє пам'ять, доки не впаде. Навіть якщо файл вдасться відкрити, підсвічування синтаксису й пошук перескануватимуть гігабайти при кожному натисканні клавіші.

Основна проблема: ці інструменти передбачають довільний доступ до всього документа. Дампу це не потрібно — це послідовний список операторів. Вам потрібно лише потоково пройти крізь нього.

Спосіб командного рядка

Утиліти Unix на вашому Mac уже працюють потоково, тож ніколи не завантажують увесь файл. Це класичний перший засіб:

# Заглянути в перші й останні рядки без відкриття всього файлу
head -n 50 dump.sql
tail -n 50 dump.sql

# Розділити дамп на частини по 100 МБ з назвами part_aa, part_ab, ...
split -b 100m dump.sql part_

# Витягти блок однієї таблиці між двома маркерами
sed -n '/CREATE TABLE `users`/,/UNLOCK TABLES/p' dump.sql > users.sql

Це працює, але крихко й марудно. split -b розрізає по межах сирих байтів, тож розсіче просто посеред оператора INSERT — отримані частини самі по собі не є коректним SQL. Трюк з діапазоном sed залежить від точних маркерів, які випадково видає конкретний інструмент для дампів; змініть версію MySQL чи перейдіть на PostgreSQL — і шаблон більше не збігається. І жоден із них не дає вам уявлення про те, що насправді всередині файлу — ви вгадуєте, яка таблиця займає 30 ГБ, ще до того, як зможете її націлити.

Відкрийте й відфільтруйте його за допомогою DumpCleaner

DumpCleaner створено саме для такого розміру файлів. Він потоково опрацьовує дамп так само, як командний рядок, але розуміє структуру SQL, тож ви отримуєте справжній список таблиць і безпечний вивід з урахуванням операторів:

  1. Перетягніть файл усередину. DumpCleaner відкриває дамп, обробляючи його частинами по ~1 МБ — файл на 50 ГБ відкривається приблизно з 50 МБ оперативної пам'яті, тож нічого не зависає.
  2. Побачте кожну таблицю. Він сканує дамп і перелічує кожну таблицю з її розміром, тож ви одразу помічаєте, яка з них роздуває файл.
  3. Зніміть позначки з непотрібного. Зніміть позначки з величезних таблиць логів, сесій чи аналітики. DumpCleaner зберігає оператори цілими — жодних наполовину розрізаних INSERT.
  4. Експортуйте. Запишіть новий, менший файл .sql, який нарешті зручно відкривається й імпортується. Ваш оригінальний файл ніколи не змінюється.

Оскільки він опрацьовує дампи на 50 ГБ і більше з постійним споживанням пам'яті, вам взагалі не доведеться думати про оперативну пам'ять вашого Mac. А оскільки він читає джерело й записує окремий вивід, дамп, з якого ви починали, залишається точно таким, яким був.

Відкривайте дампи, які не осилює ваш редактор

DumpCleaner потоково опрацьовує SQL-дампи будь-якого розміру з постійним споживанням пам'яті — без збоїв, без свопу, без очікування. Перетягніть файл на 50 ГБ, приберіть непотрібні таблиці, експортуйте менший. Нативний застосунок для macOS та iPadOS, разова покупка.

Завантажити в App Store

Поширені запитання

Наскільки великий SQL-дамп може опрацювати DumpCleaner?

Фіксованого обмеження немає. Він опрацьовує файл як потік невеликими частинами, тож дампи на 50 ГБ і більше працюють як маленькі — розмір обмежений вашим диском, а не оперативною пам'яттю.

Чи завантажує DumpCleaner увесь файл в оперативну пам'ять?

Ні. На відміну від текстового редактора, він читає дамп невеликими частинами й тримає споживання пам'яті приблизно постійним — близько 50 МБ, незалежно від того, чи файл на 200 МБ, чи на 50 ГБ.

Чи можу я розділити дамп за таблицями?

Так. Замість того щоб split сліпо різав по межах байтів, DumpCleaner розуміє структуру таблиць. Зніміть позначки з непотрібних таблиць і експортуйте чистий файл лише з тими, що залишаєте.

Чи змінює DumpCleaner мій оригінальний файл?

Ні. Вихідний дамп лише читається — DumpCleaner завжди записує новий файл, тож ваш оригінал залишається недоторканим.

Припиніть боротися зі своїм редактором

Перетягніть величезний дамп, приберіть непотрібні таблиці, експортуйте файл, який справді відкривається. DumpCleaner опрацьовує будь-який розмір з постійним споживанням пам'яті.

Завантажити в App Store