MySQLデータベースをインポートするときの進行状況インジケータのインポート

MySQLデータベースをインポートするときの進行状況インジケータのインポート

私はしばしば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 -lgzipで圧縮されたファイルの非圧縮情報を含めることを選択できます。残念ながら表形式なので、使用する前に抽出する必要があります。下からすべて見ることができます。

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注:ファイルなどのエイリアス間に機能を追加できます。

おすすめ記事