编辑非常大的SQL转储/文本文件(在Linux上)

我必须导入一个大型的mysql转储(最多10G)。 然而,sql转储已经预先定义了一个带有索引定义的数据库结构。 我想通过删除索引和表定义来加快数据库插入。

这意味着我必须删除/编辑 10G文本文件的前几行。 什么是最有效的方式在Linux上做到这一点?

需要将整个文件加载到RAM中的程序对我来说太过于浪费。

不要删除前几行,请尝试将它们编辑为空格。

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) 

乔是一个编辑器,适合大型文件。 我只是用它来编辑〜5G的SQL转储文件。 打开文件需要大约一分钟,几分钟就可以保存,只需很少使用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 / ^创建索引/ – 创建索引/'