我正在尝试导入一个大型 MySQL 转储文件,并在第 149,351 行(共 4207442 行)上收到一致错误。我想看看那一行是什么。
我发现最好的方法是这样的:
head -149351 dump.sql | tail
但是,这非常慢。我尝试在 中加载文件vi
,但它无法处理这么大的文件。我在 Windows XP 上安装了 cygwin。
答案1
sed -n '149351p' dump.sql
可能比头/尾组合稍微快一点(但也可能不是)。Vartec 是正确的;没有比阅读至少前 149351 行更快的方法了。
答案2
您可以使用以下命令查看单独的行:
tail -n+<line number> <file>|head -n1
在你的情况下:尾部-n + 149351 dump.sql | head -n1
该命令跟踪从第 149351 行开始的文件,并使用头命令仅显示尾部结果的第一行。
答案3
我建议使用 split 命令将巨大的转储分解为更易于管理的部分:
split -l20000 mysql.dump mysql.dump.
将创建名为 mysql.dump.aa、mysql.dump.ab 等的文件。每个文件包含 20000 行 - 编辑工具应该能够轻松处理这些小文件!
一旦问题解决,就可以轻松地重新组合它们:
cat mysql.dump.* > mysql.dumptest
或者
cat mysql.dump.* | mysqlimportcommand
答案4
如果行的长度不定,那么确实没有更快的方法,然后先扫描 149351(这正是您对“ head
”所做的)。