Разделитель Dump SQL
Разбейте большой dump .sql на меньшие файлы в безопасных границах инструкций, сохраняя схему, данные и ограничения в загружаемом порядке.
🔒 Этот инструмент работает полностью в вашем браузере. Ваши файлы никогда не загружаются на сервер.
Выберите файл .sql (.sql.gz тоже подходит). Он читается локально и никогда не загружается на сервер.
Один крупный оператор может превысить этот целевой размер, чтобы остаться корректным.
Как работает SQL Dump Splitter
- Добавьте файл дампа - обычный .sql или сжатый .sql.gz одинаково подходят, и он читается прямо на странице, так что ничего не загружается на сервер.
- Выберите размер фрагмента, который примет ваш инструмент импорта или ограничение хостинга.
- Загружайте файлы по порядку номеров. Сплиттер сохраняет исходный порядок операторов дампа и оставляет любую хранимую процедуру, триггер или функцию нетронутой, поэтому перед импортом проверьте разделы схемы, данных и ограничений.
FAQ
Почему ограничения должны загружаться последними?
Потому что файлы данных ссылаются друг на друга. Загрузка внешних ключей до появления связанных строк завершится ошибкой, поэтому стандартный порядок - схема, затем данные, затем ограничения и индексы.
Можно ли делить файл в любом месте?
Нет - разбиение посреди оператора создаёт файлы, каждый из которых по отдельности является некорректным SQL. Разбиение должно происходить на границах операторов, поэтому наивное разбиение по числу строк обычно ломает файл.
Обрабатывает ли он хранимые процедуры, триггеры и функции?
Да. Дамп, который меняет разделитель операторов с помощью DELIMITER ;; для определения процедуры, сохраняется как один неделимый блок от открывающей строки DELIMITER до закрывающей, поэтому граница фрагмента никогда не попадёт внутрь тела процедуры или между DELIMITER ;; и зависящим от него телом.
Можно ли использовать сжатый дамп .sql.gz?
Да - просто добавьте файл .gz напрямую, и он будет распакован в вашем браузере перед разбиением, с использованием того же стандартного формата gzip, который создают команда gzip и mysqldump | gzip. Ничего не загружается и не конвертируется на сервере.
Почему импорт всё ещё медленный после разбиения?
Разбиение решает проблему ограничений размера, а не скорости. Для скорости загружайте данные до создания индексов и оборачивайте пакеты в транзакции.
Работает ли это только с дампами MySQL?
Нет. Разбиение происходит универсально по завершающим операторы точкам с запятой, поэтому дамп PostgreSQL или другой SQL тоже разбивается безопасно. Специфичная для MySQL обработка DELIMITER включается только тогда, когда дамп действительно использует этот синтаксис для хранимых процедур или триггеров - в остальных случаях она не выполняет никаких действий.
Как выбрать размер фрагмента?
Ориентируйтесь на то, что отклоняет весь файл целиком - phpMyAdmin и многие хостинги ограничивают загрузку от нескольких МБ до нескольких сотен МБ, поэтому узнайте этот лимит и выберите размер фрагмента с запасом ниже него. Меньшие фрагменты означают лишь больше файлов для импорта по порядку, никаких других недостатков нет.
Сравнение
| Функция | Online Tool Store | CLI-скрипт | Плагин IDE |
|---|---|---|---|
| Безопасные для операторов границы | ✓ | ✗ | ✓ |
| Сохраняет исходный порядок операторов | ✓ | ✗ | Иногда |
| Дамп не загружается на сервер | ✓ | ✓ | ✗ |
| Работает при превышении лимита загрузки хостинга | ✓ | Зависит | ✗ |
| Сохраняет хранимые процедуры/триггеры нетронутыми при смене DELIMITER | ✓ | Только если скрипт учитывает DELIMITER | ✓ |
| Принимает сжатый дамп .sql.gz напрямую | ✓ | Подтверждено на sqlsplit.com; обычному скрипту, как правило, нужно сначала распаковать файл | ✓ |
SQL Dump Splitter помогает, когда импорт не проходит из-за размера файла - он разбивает там, где это допускает SQL, распаковывает сжатый дамп за вас и сохраняет каждый фрагмент безопасным для операторов, включая хранимые процедуры.