编辑非常大的sql dump / text文件(在linux上)

时间:2009-03-31 02:19:50

标签: linux mysqldump large-files

我必须导入一个大的mysql转储(最多10G)。但是,已经使用具有索引定义的数据库结构预定义了sql转储。我想通过删除索引和表定义来加速数据库插入。

这意味着我必须删除/修改 10G 文本文件的前几行。什么是最有效的方法

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

4 个答案:

答案 0 :(得分:32)

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

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)

答案 1 :(得分:3)

joe是一个适用于大文件的编辑器。我只是用它来编辑~5G SQL转储文件。打开文件花了大约一分钟,保存几分钟,很少使用swap(在具有4G RAM的系统上)。

答案 2 :(得分:2)

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

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

答案 3 :(得分:-1)

Perl可以逐行读取文件:

perl -pi.bak -e's / ^ create index / - create index /'