Редактировать очень большой sql dump/text file (on linux)

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

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

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

Ответы

Ответ 1

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

Программа hexedit может это сделать - она ​​читает файлы в кусках, поэтому открытие 10-Гбайт файла ничем не отличается от открытия на нем 100 КБ файла.

$ 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)

Ответ 2

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

Ответ 3

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

или

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

Ответ 4

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

perl -pi.bak -e '//create index/- создать индекс/'