Saya sering mengimpor database MySQL, dan ini bisa memakan waktu cukup lama. Tidak ada indikator kemajuan apa pun. Bisakah seseorang ditampilkan, entah bagaimana? Entah catatan diimpor, MB diimpor, atau tabel diimpor ... semuanya lebih baik daripada hanya menunggu. Adakah yang tahu?
Saya menggunakan perintah ini:
mysql -uuser -p -hhost database < largefile.sql
File-file berukuran antara 40-300 MB, dan host berada dalam jaringan lokal.
pv
,cpipe
) berfungsi dalam skenario ini?pv
persis apa yang dicari si penanya. Saya baru saja menginstalnya di CentOS melalui rpmforge. Jika diberi ukuran -parameter itu bahkan akan menampilkan ETA.pv
memang melakukan trik! Jika seseorang dapat membuat ini menjadi jawaban, saya dapat menerima ini!Jawaban:
Ada alat bagus yang disebut
pv
lalu mis. Anda bisa menggunakannya seperti ini
ps: periksa blog ini http://blog.larsstrand.org/2011/12/tip-pipe-viewer.html
UPDATE: sepertinya tautan di atas rusak tetapi saya menemukan artikel yang sama di sini http://blog.larsstrand.no/2011/12/tip-pipe-viewer.html
UPDATE 2: Solusi yang lebih baik lagi dengan progress bar FULL. Untuk melakukannya, Anda perlu menggunakan 2
pv
opsi bawaan. Salah satunya adalah--progress
untuk menunjukkan progress bar dan kedua adalah--size
untuk mengetahuipv
seberapa besar keseluruhan file.Masalahnya adalah dengan
.gz
ukuran file asli. Anda perlu entah bagaimana mendapatkan informasi ukuran file asli tanpa membongkar sendiri, jika tidak, Anda akan kehilangan waktu berharga untuk membongkar file ini dua kali (pertama kali untukpv
kedua kalinyazcat
). Tapi untungnya Anda memilikigzip -l
opsi yang berisi informasi yang tidak terkompresi tentang file gziped kami. Sayangnya Anda memilikinya dalam format tabel sehingga Anda perlu mengekstraksi sebelum dapat menggunakannya. Semuanya bisa dilihat di bawah ini:Uff .. jadi hal terakhir yang perlu Anda lakukan hanyalah menggabungkan semuanya.
Untuk membuatnya lebih bagus, Anda dapat menambahkan progres NAME seperti ini
Hasil akhir:
UPDATE 3: Untuk penggunaan cepat buat fungsi kustom.
pemakaian:
Jika Anda tidak tahu di mana harus meletakkannya, baca jawaban ini: /unix//a/106606/20056
Anda dapat menambahkan fungsi di antara alias. Jadi Anda bisa menggunakan
~/.bash_aliases
file mis .sumber
pv --progress --name 'DB Import in progress' -tea /path/to/our/database.sql.gz | zcat | mysql -h db_host -u db_user -pdb_password db_name
Kenapa begitu rumit?
Ini berfungsi dengan baik:
sumber
Saya selalu mengimpor database dari shell MySql. Itu tidak memberikan indikator kemajuan, tetapi itu (cepat) gulir tindakan yang dilakukannya jadi saya tahu itu berfungsi.
sumber