私はしばしばMySQLデータベースをインポートするのに時間がかかることがあります。進行状況インジケータはありません。どのような方法で表示できますか?レコードのインポート、MBのインポート、テーブルのインポートなど、何でも待つよりも優れています。誰でもどんなアイデアがありますか?
私は次のコマンドを使用します。
mysql -uuser -p -hhost database < largefile.sql
ファイルサイズは40〜300 MBで、ホストはローカルネットワーク内にあります。
ベストアンサー1
という素晴らしいツールがあります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
注:このブログをチェックしてください。 http://blog.larsstrand.no/2011/12/tip-pipe-viewer.htmlより多くの洞察を得るために。
注:完全な進行状況バーがあるより良いソリューションです。これを行うには、2つの組み込み
pv
オプションを使用する必要があります。 1つは--progress
進行状況バーを表示すること、もう1つはファイル全体のサイズを--size
示すことです。pv
pv --progress --size UNPACKED-FILE-SIZE-IN-BYTES
..問題は.gz
元のファイルサイズにあります。解凍せずに解凍した後、何とか生のファイルサイズ情報を取得する必要があります。それ以外の場合、このファイルを2回(最初pv
と2番目zcat
)に解凍するのに貴重な時間を無駄にします。ただし、幸いにも、gzip -l
gzipで圧縮されたファイルの非圧縮情報を含めることを選択できます。残念ながら表形式なので、使用する前に抽出する必要があります。下からすべて見ることができます。
gzip -l /path/to/our/database.sql.gz | sed -n 2p | awk '{print $2}'
注:以下は、最も一般的なアーカイブツールと方法のリストと、これらのアーカイブから圧縮されていない大量のバイトを抽出する方法です。
tar -tvf database.sql.tar | awk '{print $3}' | paste -sd+ | bc unzip -Zt database.sql.zip | awk '{print $3}' unrar l database.sql.rar | tail -n2 | head -n1 | awk '{ print $1 }' 7z l database.sql.7z | tail -n1 | awk '{ print $3 }'
ええと、最後にやるべきことはそれらを組み合わせることです。
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%
迅速な使用のためにカスタム機能を作成できます。
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
注:ファイルなどのエイリアス間に機能を追加できます。