У меня есть резервный файл SQL объемом 250 МБ, но ограничение на новый хостинг составляет всего 100 МБ ...
Существует ли программа, позволяющая разбить файл SQL на несколько файлов SQL?
Кажется, что люди отвечают на неправильный вопрос ... поэтому я уточню больше:
У меня ТОЛЬКО файл 250 МБ, и только новый хостинг использует phpMyAdmin, который в настоящее время не имеет данных в базе данных. Мне нужно взять файл 250 МБ и загрузить его на новый хост, но есть ограничение размера загрузки файла резервной копии SQL 100 МБ. Мне просто нужно взять один файл, который слишком велик, и разбить его на несколько файлов, каждый из которых содержит только полные допустимые операторы SQL (никакие операторы не могут быть разделены между двумя файлами).
Ответы:
От Как я могу разделить вывод из mysqldump на более мелкие файлы?
источник
Простейший способ разбить файл резервной копии - использовать программное обеспечение
sqldumpsplitter
, которое позволяет разбить файл БД на несколько файлов БД. Скачать здесьИли используйте эту терминальную команду.
Здесь 600 - это количество строк, которые вы хотите иметь в ваших разделенных файлах. И два аргумента - источник и место назначения файлов соответственно.
ПРИМЕЧАНИЕ: вы должны проверить файлы разделения, вы не разделяете никакие команды.
источник
split
я рекомендую использоватьcsplit
. Он не будет разделяться сразу после определенного номера строки, который может быть, например, между спискомINSERT
значений. Вы можете передать регулярное выражение, чтобы определить строки для разделения. Используйте его следующим образом, пример : `csplit -k dump.sql '/ ^ CREATE TABLE. * /' '{900}'` Это разделит ваш файл дампа перед каждымcreate table …
оператором. Измените это в соответствии с вашими потребностями. (Кстати, я передаю{900}
вместо того,{*}
потому что я получаю ошибку "csplit: *}: неверное количество повторений" , может быть, просто проблема в MacOS?)Я написал mysqldumpsplitter (сценарий оболочки), который быстро и легко разбивает базы данных / таблицы в соответствии с инструкциями. Просмотрите все возможные варианты использования инструкции по извлечению из mysqldump .
источник
Этот код будет делать именно то, что вы хотите (и это с открытым исходным кодом):
https://web.archive.org/web/20160313044916/http://rodo.nl/index.php?page=mysql-splitter
Это позволяет вам разбить любой файл SQL на несколько файлов меньшего размера (вы можете определить максимальный размер). Синтаксис SQL будет сохраняться правильно, и он работает с синтаксисом запроса «множественная вставка».
Надеюсь это поможет!
источник
1) У вас есть возможность загрузить файл другим способом, например: scp или ftp, а затем восстановить его из локального файла?
2) Ваш провайдер возьмет файл с компакт-диска и загрузит его для вас?
3) Можете ли вы восстановить файл на локальном сервере, а затем сделать из него серию файлов резервных копий, используя определенные критерии для уменьшения размеров отдельных файлов?
4) Вы могли бы разделить файл вручную, а затем привести в порядок команды SQL в конце файлов?
источник
4 was my first thought, but I can't even open the large file in notepad or any editor
- Блокнот ++ может справиться с ними хорошо. еще посмотрите на superuser.com/questions/34749/…Вы можете разбить большой файл в Eclipse. Я попытался файл 105GB в Windows успешно:
Просто добавьте библиотеку MySQLDumpSplitter в свой проект: http://dl.bintray.com/verace/MySQLDumpSplitter/jar/
Краткое примечание о том, как импортировать:
источник
У меня тоже была эта проблема, и я решил написать чрезвычайно эффективный код памяти и процессора, который разбивает один файл .sql на несколько (по одному на таблицу).
Я должен был написать это, так как любое другое решение, которое я нашел, не было достаточно хорошим. На реальном 16ГБ дампе мне удалось разделить его менее чем за 2 минуты.
Код и инструкции доступны на странице проекта на github.
источник
Есть несколько вариантов, если вы можете запустить bash или perl скрипт. Попробуйте это от yoodey.com
источник
Вместо разделения файла вы можете использовать клиент MySQL на локальном компьютере и подключить его к удаленной базе данных MySQL. Я использую HeidiSQL и нашел его очень хорошим.
Конечно, отправка 250 МБ операторов SQL через Интернет может занять некоторое время.
Вы также можете попробовать BigDump
источник