一尘不染

如何监控大型 .sql 文件的导入进度?

sql

我正在导入 7 GBfoobar.sql来恢复本地数据库中的表。

$ mysql -h localhost -u root 'my_data' < foobar.sql

$ mysql --version
/usr/local/mysql/bin/mysql  Ver 14.12 Distrib 5.0.96, for apple-darwin9.8.0 (i386) using readline 5.1

我如何监控其进度?


阅读 55

收藏
2022-10-09

共1个答案

一尘不染

如果您只是从 *nix 上的 CLI 的转储文件导入,例如

mysql -uxxx -pxxx dbname < /sqlfile.sql

然后首先在您的操作系统上安装管道查看器,然后尝试这样的事情:

pv sqlfile.sql | mysql -uxxx -pxxxx dbname

这将在程序运行时显示一个进度条。

它非常有用,您还可以使用它来估计 mysqldump 进度。

pv 转储sqlfile.sql并将它们传递给 mysql(因为管道运算符)。在倾倒时,它显示了进展。很酷的是 mysql 只在它可以进行的情况下以最快的速度获取数据,因此 pv 可以显示导入的进度。我没有任何证据。但似乎是这样。我想有一些缓冲区使用,但在某些时候我认为mysql当它仍然忙于处理时不会再读取任何数据。

管道查看器屏幕截图

2022-10-09