我有导入大的MySQL转储(高达10G)。然而,SQL转储已预定义了索引定义数据库结构。我想通过去除索引和表定义以加快分贝插入件。

这意味着我要删除/修改一个的 10G 文本文件的前几行。什么是做到这一点的最有效方法在Linux

这需要加载整个文件到RAM中的程序将是矫枉过正我。

有帮助吗?

解决方案

不是除去第几行,尝试编辑他们成为空格。

hexedit程序可以做this--它在组块读出的文件,因此打开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内存的系统上)。

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

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

Perl可以逐行读取文件行:

的perl -pi.bak -e的/ ^创建索引/ - 创建索引/'

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top