编辑非常大的SQL转储/文本文件(在Linux上)
-
22-08-2019 - |
题
我有导入大的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的/ ^创建索引/ - 创建索引/'
不隶属于 StackOverflow