มีเครื่องมือที่ดีที่เรียกว่า 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: ทางออกที่ดียิ่งขึ้นด้วย FULL คืบหน้าบาร์ คุณต้องใช้ 2 บิลด์ในpv
ตัวเลือก หนึ่งคือ--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
ในการทำให้มันดีกว่านี้คุณสามารถเพิ่มโปรแกรม 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
หากคุณไม่รู้ว่าจะใส่ไว้ตรงไหนให้อ่านคำตอบนี้:
/unix//a/106606/20056
คุณสามารถเพิ่มฟังก์ชั่นในนามแฝง ดังนั้นคุณสามารถใช้~/.bash_aliases
ไฟล์เช่น
pv
,cpipe
) ทำงานในสถานการณ์นี้ได้หรือไม่