有一个很好的工具叫做 pv
# On Ubuntu/Debian system
$ sudo apt-get install pv
# On Redhat/CentOS
$ sudo yum install pv
然后,例如,您可以像这样使用它
$ zcat dbpackfile.sql.gz | pv -cN zcat | mysql -uuser -ppass dbname
请检查UPDATE 2以获取我的最新版本
ps:请查看此博客http://blog.larsstrand.org/2011/12/tip-pipe-viewer.html
更新:似乎上面的链接已损坏,但我在这里找到了同一篇文章http://blog.larsstrand.no/2011/12/tip-pipe-viewer.html
更新2:带有完整进度条的更好的解决方案。为此,您需要使用2个内置pv
选项。一是--progress
指示进度条和第二就是--size
要告诉pv
整个文件有多大。
pv --progress --size UNPACKED-FILE-SIZE-IN-BYTES
..问题出在.gz
原始文件大小上。您需要以某种方式获取未解压缩的原始文件大小信息,而无需自行对其进行解压缩,否则,您将失去宝贵的时间来两次解压缩该文件(第一次为pv
,第二次为zcat
)。但幸运的是,您可以gzip -l
选择包含有关我们gzip解压缩文件的未压缩信息的选项。不幸的是,您以表格格式拥有它,因此需要提取后才能使用它。一起可以在下面看到:
gzip -l /path/to/our/database.sql.gz | sed -n 2p | awk '{print $2}'
那么,您要做的最后一件事就是将所有内容组合在一起。
zcat /path/to/our/database.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` | mysql -uuser -ppass dbname
为了使它更好,您可以像这样添加进度NAME
zcat /path/to/our/database.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` --name ' Importing.. ' | mysql -uuser -ppass dbname
最后结果:
Importing.. : [===========================================>] 100%
更新3:为了快速使用,请创建自定义函数。
mysql_import() {
zcat $2 | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` --name ' Importing.. ' | mysql -uuser -ppass $1
}
用法:
mysql_import dbname /path/to/our/database.sql.gz
如果您不知道将它放在哪里,请阅读以下答案:https :
//unix.stackexchange.com/a/106606/20056
您可以在别名之间添加功能。因此,您可以使用例如~/.bash_aliases
文件。
pv
,cpipe
在这种情况下)的工作?