Редактировать очень большой дамп 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