我需要导入一个大型的mysql dump(高达10G)。但是,SQL dump已经预定义了数据库结构和索引定义。我想通过删除索引和表格定义来加速数据库插入。
这意味着我必须在Linux上删除/编辑一个10G文本文件的前几行。那么,最有效的方法是什么?
需要将整个文件加载到内存中的程序对我来说过于繁琐。
我需要导入一个大型的mysql dump(高达10G)。但是,SQL dump已经预定义了数据库结构和索引定义。我想通过删除索引和表格定义来加速数据库插入。
这意味着我必须在Linux上删除/编辑一个10G文本文件的前几行。那么,最有效的方法是什么?
需要将整个文件加载到内存中的程序对我来说过于繁琐。
不要 删除 前几行,尝试将它们编辑为空格。
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)
joe 是一个能够很好地处理大文件的编辑器。我刚刚使用它来编辑了一个约5G的SQL转储文件。打开这个文件大约需要一分钟左右,保存它则需要几分钟,并且在4G内存的系统上几乎没有使用交换空间。
sudo apt install joe
- Chadsed 's/OLD_TEXT/NEW_TEXT/g' < oldfile > newfile
或者
cat file | sed 's/OLD_TEXT/NEW_TEXT/g' > newfile