有一个很好的工具叫做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
Please check UPDATE 2 for my latest version
更新2:使用FULL进度条更好的解决方案.要做到这一点,你需要在pv选项中使用2 build.一个是–progress指示进度条,第二个是–size告诉pv整个文件有多大.
pv --progress --size UNPACKED-FILE-SIZE-IN-BYTES
..问题是.gz原始文件大小.您需要以某种方式获取解压缩的原始文件大小信息而无需自行解压缩,否则您将浪费宝贵的时间来解压缩此文件两次(第一次用于pv,第二次用于zcat).但幸运的是,您有gzip -l选项,其中包含有关我们的gziped文件的未压缩信息.不幸的是,你有表格格式,所以你需要在它可以使用之前提取.所有这些都可以在下面看到:
gzip -l /path/to/our/database.sql.gz | sed -n 2p | awk '{print $2}'
Uff ..所以你需要做的最后一件事就是把所有东西组合在一起.
zcat /path/to/our/database.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` | mysql -uuser -ppass dbname
为了使它更好,你可以像这样添加进程名称
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
您可以在别名中添加功能.所以你可以使用例如?/ .bash_aliases文件.