Просто отредактируйте файл дампа так, чтобы после 300 вставок вы начинали новую инструкцию:
INSERT INTO `myTable` (`id`, `field1`, `field2`) VALUES
(1, 'a', 'b'),
(2, 'c', 'd'),
(3, 'e', 'f'),
-- snip --
(300, 'w', 'x');
INSERT INTO `myTable` (`id`, `field1`, `field2`) VALUES
(301, 'y', 'z'),
(302, ... etc
Вы можете сделать это, просто открыв файл <backup>.sql
в любом текстовом редакторе, это просто текст. Иногда резервная копия может быть файлом .gz
или .bz
, но это просто zip-архивы: если вы распакуете эти сжатые или сжатые файлы, у вас получится один .sql
файл, который вы можете легко редактировать.
Вероятно, было бы не сложно написать скрипт для разделения каждого оператора после произвольного числа строк. Основная логика программы будет выглядеть примерно так:
- найдите строку, которая начинается с "INSERT".
- скопировать строку до конца слова "VALUES"
- пройти все следующие строки, считая по ходу.
- если ваш счетчик достигает 300, добавьте точку с запятой в конец последней строки и вставьте в оператор "INSERT ... VALUES" ранее. Сбросьте счетчик до 1 и перейдите к шагу 3.
- если вы достигнете строки, которая начинается с «INSERT», сбросьте счетчик на 1 и перейдите к шагу 2.
Хотя вы можете просто сделать это вручную, а затем убедиться, что все будущие резервные копии не будут использовать расширенные вставки. Кроме того, phpMyAdmin позволяет вам установить максимальный размер оператора при создании экспорта, так что, в основном, он сделает это за вас.
Хотя то, что вы сделали с ограничением памяти, вероятно, гораздо более простое решение. Для тех, кто находится в аналогичной ситуации и не может изменить эти ограничения, попробуйте описанное выше.