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

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

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

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

Ответы [ 4 ]

32 голосов
/ 31 марта 2009

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

Программа 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)
3 голосов
/ 03 декабря 2013

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

2 голосов
/ 18 мая 2014
sed 's/OLD_TEXT/NEW_TEXT/g' < oldfile > newfile

или

cat file | sed 's/OLD_TEXT/NEW_TEXT/g' > newfile
0 голосов
/ 31 марта 2009

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

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

...