ฉันพยายามนำเข้าไฟล์ gzipped SQL ลงใน mysql โดยตรง นี่เป็นวิธีที่ถูกต้องหรือไม่
mysql -uroot -ppassword mydb > myfile.sql.gz
ฉันพยายามนำเข้าไฟล์ gzipped SQL ลงใน mysql โดยตรง นี่เป็นวิธีที่ถูกต้องหรือไม่
mysql -uroot -ppassword mydb > myfile.sql.gz
คำตอบ:
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
>
จะเขียนผลลัพธ์ของmysql
คำสั่งstdout
ลงในไฟล์myfile.sql.gz
ซึ่งส่วนใหญ่อาจไม่ใช่สิ่งที่คุณต้องการ นอกจากนี้คำสั่งนี้จะแจ้งให้คุณใส่รหัสผ่านของผู้ใช้ MySQL "root"
~/.my.cnf
โดยใช้ข้อมูลรับรอง ;)
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
ได้ มันจะรู้ว่าพารามิเตอร์สุดท้ายคือฐานข้อมูลที่คุณต้องการใช้ไม่ใช่รหัสผ่านของคุณ
หากต้องการแสดงแถบความคืบหน้าในขณะที่นำเข้าไฟล์ sql.gz ให้ดาวน์โหลดpv
และใช้สิ่งต่อไปนี้:
pv mydump.sql.gz | gunzip | mysql -u root -p
ใน CentOS / RHEL คุณสามารถติดตั้ง pv yum install pv
ได้
ใน apt-get install pv
Debian
ใน MAC brew install pv
pv
ดูเหมือนว่าจะอยู่ใน repos ของ Ubuntu ด้วย (อย่างน้อยก็ใน 12.04 LTS) แต่ก็ต้องทำอีกครั้งเพื่อsudo apt-get install pv
ให้ได้มา ขอบคุณ Banjer นี่เหมาะสำหรับการนำเข้าฐานข้อมูลขนาดใหญ่!
brew install pv
วิธีที่ง่ายที่สุดคือการแตกไฟล์ฐานข้อมูลก่อนนำเข้า ยังเป็นที่กล่าวถึงโดย@Prof โมริอาร์ตีคุณไม่ควรระบุรหัสผ่านในคำสั่ง (คุณจะถูกขอรหัสผ่าน) คำสั่งนี้มาจากwebcheatsheetจะทำการคลายซิปและนำเข้าฐานข้อมูลในครั้งเดียว
gunzip < myfile.sql.gz | mysql -u root -p mydb
gunzip
การบีบอัดไฟล์ที่บีบอัด 10GB ทำให้การนำเข้าของฉันหยุดลง ไม่แน่ใจว่าเป็นเพราะข้อ จำกัด ของหน่วยความจำหรือบางอย่าง แต่ฉันทำผิดพลาดในการทำทีละขั้นในอนาคต
ถ้าคุณได้รับข้อผิดพลาดจากzcat
ในที่เกิดข้อผิดพลาดมีชื่อไฟล์ที่มีคำต่อท้ายพิเศษ.Z
แล้วลองใช้gzcat
แทนตามที่อธิบายไว้ในhttps://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly
ใน macOS ฉันใช้สิ่งนี้:
zcat < [Database].sql.gz | mysql -u root -p [Database Name in MySQL]
ใส่รหัสผ่านของคุณและ voila!
ตรวจสอบด้วยว่ามีคำสั่ง USE ใด ๆ ในไฟล์ SQL หรือไม่ การระบุฐานข้อมูลที่บรรทัดคำสั่งไม่ได้รับประกันว่าข้อมูลจะจบลงที่นั่นหากระบุปลายทางอื่นภายในไฟล์ SQL
pv mydump.sql.gz | gunzip | mysql -u root -p
your_database
. คำตอบที่ยอมรับใช้วิธีนี้
สำหรับไฟล์บีบอัดbzip2 (.sql.bz2) ให้ใช้:
bzcat <file> | mysql -u <user> -p <database>
หรือ
pv <file> | bunzip2 | mysql -u <user> -p <database>
เพื่อดูแถบความคืบหน้า
คุณสามารถใช้-c, --stdout, --to-stdout
ตัวเลือกของgunzip
คำสั่ง
ตัวอย่างเช่น:
gunzip -c file.sql.gz | mysql -u root -p database