LINUX.ORG.RU
решено ФорумTalks

[mysql dump] [splitting] [console] [geeks] помогите разбить дамп.


0

1

Есть один дамп mysql базы. Размером около 100мб в распакованом виде. Нужно этот дамп восстановить на шаред хостинг. А это значит ssh нет, и можно восстанавилвать только через phpmyadmin. Но он сий файл не может обработать. Посему нужно его разбить на несколько мелких. Не больше 5 мб каждый.

Вопрос - как это сделать в консоли ?

Жду ваших однострочников гуру.

Золей чориз похапе, будь Ъ.

Tark ★★ ()
Ответ на: комментарий от AITap

а как сделать чтобы он не разрезал 1 таблицу в разные файлы ?

guyvernk ()
Ответ на: комментарий от karbofos

ЕМНИП, он испытывает те же проблемы с обработкой запросов из файлов, что и PhpMyAdmin. Делает бекап он хорошо, а вот с загрузкой из бекапа у hoster.ru я неоднократно сталкивался с проблемой, что он прерывал своё выполнение после истечения установленного на сервере для скрипта рабочего времени. Впрочем, может, в новых версиях это и пофикшено.

Terrens ()

Я 270-метровый дамп открывал в редакторе и по частям скармливал PhpMyAdmin, когда не было возможности подключаться к SSH.
Твой дамп меньше в 2.7 раза, и процесс будет не таким уж долгим :)
(порядка 10-12 минут, если редактор не будет глючить)

Terrens ()
Ответ на: комментарий от Terrens

скачал вендопрограмму

запустил под вайном

она насплитала в 12 файликов

сижу импорчу

но все же интересно - как в соснсоле это сделать ))

guyvernk ()
Ответ на: комментарий от Terrens

> он прерывал своё выполнение после истечения установленного на сервере для скрипта рабочего времени. Впрочем, может, в новых версиях это и пофикшено.

* работа в несколько этапов (для обхода ограничений во времени);

karbofos ()
Ответ на: комментарий от karbofos

Наверное, я пользовался изрядно корявой версией (качал с woweb.ru), потому что у меня он работал в несколько этапов только в процессе создания бекапов :)

Terrens ()
Ответ на: комментарий от hatefu1_dead

facepalm.jpg

вручную сидеть разбираться в 100 мегабайтном файле - да

guyvernk ()
Ответ на: комментарий от guyvernk

Надо грепом пройти по файлам и последний инсерт взять с помощью tail, а потом добавить его к отрезанной части файла.

Tark ★★ ()

разбить по табличкам при экспорте?

for name in $(mysql -u user -ppassword DBname -e 'show tables' -s --skip-column-names);
do 
  mysqldump -u user -ppassword DBname $name | gzip > "$I.sql.gz"; 
done
dGhost ★★★ ()
Ответ на: комментарий от hatefu1_dead
 -e, --extended-insert
                     Use multiple-row INSERT syntax that include several
                     VALUES lists.
                     (Defaults to on; use --skip-extended-insert to disable.)
anonymous_0 ()
Ответ на: комментарий от hatefu1_dead

> там еще create table может быть разрезан - это тоже нужно обработать как-нибудь.

-d, --no-data No row information.

не думаю, что там будет столько таблиц, что скрипт ниасилит за один заход их создать. А вторым заходом

-t, --no-create-info Don't write table creation info.

anonymous_0 ()
Ответ на: комментарий от hatefu1_dead

Дык щас оно вообще никак не вставляется...

Можно еще поиграться с --max-allowed-packet=#, чтобы оно не генерило инсерты таких эпичных размеров. Но это все ментальный онанизм, поскольку ТС задачу уже решил. Вендопрограммой

anonymous_0 ()

ТС, если ещё не сделал.
Обычно на 90% хостингов с похапэ имеется mysqldump и разрешено исполнение комманд через system/exec/etc.

Юзаешь этот код:

<?php
system('nice -n 16 mysql --verbose --user=XXXXXXXX --password=XXXXXXXX DB_NAME < /PATH/TO/DUMPFILE.SQL&');

winddos ★★★ ()

залей по фтп и через пхп exec(), например, влей дамп.

leave ★★★★★ ()

>и можно восстанавилвать только через phpmyadmin.
На случай если исполнения команд нет:
1 - Пишешь сапорту письмо в виде «Прошу закатать дамп базы http://host/file.sql в базу myuser_trashdb»
2 - ....
3 - PROFIT!

winddos ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.