Редактировать очень большой дамп sql / текстовый файл (в linux)

Мне нужно импортировать большой дамп mysql (до 10G). Однако дамп sql уже предопределен со структурой базы данных с определением индекса. Я хочу ускорить вставку БД, удалив определение индекса и таблицы.

Это означает, что я должен удалить/редактировать первые несколько строк 10G текстовый файл. Каков наиболее эффективный способ сделать это в linux?

программы, требующие загрузки всего файла в ОЗУ, будут будь для меня перебором.

4 ответов


, а не удаление первые несколько строк попробуйте отредактировать, чтобы они были пробелами.

на hexedit программа может это сделать-она читает файлы кусками, поэтому открытие файла 10GB ничем не отличается от открытия файла 100KB.

$ hexedit largefile.sql.dump
tab (switch to ASCII side)
space (repeat as needed until your header is gone)
F2 (save)/Ctrl-X (save and exit)/Ctrl-C (exit without saving)

Джо редактор, который хорошо работает с большими файлами. Я просто использовал его для редактирования файла дампа SQL ~5G. Потребовалось около минуты, чтобы открыть файл и несколько минут, чтобы сохранить его, с очень небольшим использованием swap (в системе с 4G RAM).


sed 's/OLD_TEXT/NEW_TEXT/g' < oldfile > newfile

или

cat file | sed 's/OLD_TEXT/NEW_TEXT/g' > newfile

Perl может читать файл строка за строкой:

perl-pi.bak-e ' s / ^create index / --create index/'