วิธีการส่งออกฐานข้อมูล mysql โดยใช้ Command Prompt


342

ฉันมีฐานข้อมูลที่ค่อนข้างใหญ่ดังนั้นฉันต้องการส่งออกโดยใช้ Command Prompt แต่ไม่รู้วิธีการ

ฉันกำลังใช้ WAMP


6
DOS? คุณใช้ Windows 98 อยู่หรือเปล่า หรือคุณหมายถึงพรอมต์คำสั่ง?
กรกฎาคม

ในการใช้ wamp คุณควรมี phpmyadmin พร้อมตัวเลือกการส่งออกด้วย
Lars C. Magnusson

คำตอบ:


537

ก่อนอื่นให้ตรวจสอบว่าบรรทัดคำสั่งของคุณรู้จักคำสั่ง mysql หรือไม่ หากไม่ไปที่คำสั่ง & พิมพ์ใน:

set path=c:\wamp\bin\mysql\mysql5.1.36\bin

จากนั้นใช้คำสั่งนี้เพื่อส่งออกฐานข้อมูลของคุณ:

mysqldump -u YourUser -p YourDatabaseName > wantedsqlfile.sql

แล้วคุณจะได้รับพร้อมท์สำหรับรหัสผ่านฐานข้อมูล

สิ่งนี้จะส่งออกฐานข้อมูลไปยังพา ธ ที่คุณอยู่ในขณะที่ดำเนินการคำสั่งนี้

หมายเหตุ: ต่อไปนี้เป็นคำแนะนำโดยละเอียดเกี่ยวกับการนำเข้าและส่งออก


7
มันให้ข้อผิดพลาด "mysqldump: มีข้อผิดพลาด: 1049: ฐานข้อมูลที่ไม่รู้จัก 'thepassword' เมื่อเลือกฐานข้อมูล" แต่ทำงานเมื่อฉันลบ "-p userpassword"
AteşDanış

11
@ AteşDanışไม่มีที่ว่างระหว่างและ-p thepassword
Charles Wood

44
คุณควรใช้-pและจากนั้นจะได้รับพร้อมท์สำหรับรหัสผ่าน วิธีนี้คุณหลีกเลี่ยงการบันทึกรหัสผ่านของคุณเช่นใน.bash_history
nuala

7
สำหรับฉันคำสั่งนี้ใช้งานได้: mysqldump -u YourUser -p YourDatabaseName> wantssqlfile.sql (พิมพ์คำสั่งกด enter แล้วรหัสผ่านจะถูกป้อน)
shasi kanth

3
การระบุรหัสผ่านในบรรทัดคำสั่งควรได้รับการพิจารณาว่าไม่ปลอดภัย
wappy

112

เพียงใช้คำสั่งต่อไปนี้

เพื่อการส่งออก:

mysqldump -u [user] -p [db_name] | gzip > [filename_to_compress.sql.gz] 

สำหรับการนำเข้า:

gunzip < [compressed_filename.sql.gz]  | mysql -u [user] -p[password] [databasename] 

หมายเหตุ:ไม่มีช่องว่างระหว่างคำหลัก '-p' และรหัสผ่านของคุณ


1
ฉันคิดว่าคุณพลาดความจริงที่ว่าเขาใช้ WAMP - Windows ... gunzip / gzip ไม่ได้รวมอยู่ใน Windows อาจเป็นไปได้ที่จะรันคำสั่งของคุณหลังจากติดตั้งบางสิ่ง แต่ฉันคิดว่าคุณพลาดข้อเท็จจริงไปแล้ว
Rolf

2
การระบุgzip -9ทำให้ไฟล์ผลลัพธ์มีขนาดเล็กลงเล็กน้อยเนื่องจากมีการใช้การบีบอัดสูงสุด
AntonK

39

ก่อนอื่นจากรับคำสั่ง open จากนั้นเปิดไดเรกทอรีbinในcmd (ฉันหวังว่าคุณจะรู้ด้วยคำสั่งcmd ) ไปที่ไดเรกทอรีbinของโฟลเดอร์ MySql ของคุณในไฟล์โปรแกรมWAMP

เรียกใช้คำสั่ง

mysqldump -u db_username -p database_name > path_where_to_save_sql_file

กด enter ระบบจะส่งออกฐานข้อมูลเฉพาะและสร้างไฟล์ sql ไปยังตำแหน่งที่กำหนด

ฉันหวังว่าคุณจะได้รับมัน :) หากคุณมีคำถามใด ๆ โปรดแจ้งให้เราทราบ


เพื่อนของฉันฉันพยายามอธิบายขั้นตอนเล็กน้อย ค่อนข้างจะให้คำสั่งโดยตรง
Mitesh vaghela

38

คุณสามารถใช้คำสั่งด้านล่าง

mysqldump --databases --user=root --password your_db_name > export_into_db.sql

และไฟล์ที่สร้างขึ้นจะมีอยู่ในไดเรกทอรีเดียวกันกับที่คุณเคยใช้คำสั่งนี้

คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับการอ้างอิงอย่างเป็นทางการสำหรับmysqldump: นำเข้าส่งออกฐานข้อมูล MySQL

หมายเหตุ : ใช้--databasesแทนการใช้--databaseตั้งแต่ล่าสุดไม่รองรับ

สนุก :)


4
สำหรับผู้ที่ได้รับข้อผิดพลาดเช่น "การเข้าถึงถูกปฏิเสธเมื่อใช้แท็บเล็ต LOCK" คุณควรเพิ่มพารามิเตอร์ "--single-transaction" ให้กับคำสั่ง
Skyrpex

ฉันพบข้อผิดพลาดmysqldump: [ERROR] unknown option '--database'แต่--databaseไม่สามารถใช้งานได้
hejdav

@Skyrpex ขอบคุณนั่นเป็นคำตอบที่ฉันต้องการ
Martijn

22

ไปที่ command prompt ที่เส้นทางนี้

C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin>

จากนั้นให้คำสั่งนี้เพื่อส่งออกฐานข้อมูลของคุณ ( ไม่มีช่องว่างหลังจาก -p )

mysqldump -u[username] -p[userpassword] yourdatabase > [filepath]wantedsqlfile.sql


21

ค้นหาอินสแตนซ์ mysql ของคุณด้วย:

which mysql

หากสิ่งนี้ถูกต้องให้ส่งออกด้วยสิ่งต่อไปนี้ (ไม่เช่นนั้นไปที่อินสแตนซ์ mysql ในโฟลเดอร์ mamp ของคุณในถังขยะ)

mysqldump -u [username] -p [password] [dbname] > filename.sql

และถ้าคุณต้องการซิปมันในช่วงเวลา:

mysqldump -u [username] -p [password] [db] | gzip > filename.sql.gz

จากนั้นคุณสามารถย้ายไฟล์นี้ระหว่างเซิร์ฟเวอร์ด้วย:

scp user@xxx.xxx.xxx.xxx:/path_to_your_dump/filename.sql.gz your_detination_path/

(โดยที่ xxx.xxx.xxx.xxx เป็นที่อยู่ IP ของเซิร์ฟเวอร์)

จากนั้นนำเข้าด้วย:

gunzip filename.sql.gz | mysql -u [user] -p [password] [database]

4
อีกครั้งW AMP => Windows ซึ่งเป็นคำสั่ง Linux gunzip / gzip ไม่ได้มาพร้อมกับ Windows - และอาจไม่สามารถใช้ได้ scp ... คุณเข้าใจแล้ว
Rolf

คำตอบของ Opentuned เป็นที่ดี สิ่งเล็ก ๆ น้อยหนึ่งคือการลบจริงpasswordออกจากบรรทัดคำสั่ง: mysqldump -u [ชื่อผู้ใช้] -p [dbname]> filename.sql สิ่งนี้ช่วยป้องกันไม่ให้คนค้นหาประวัติของคุณสำหรับรหัสผ่าน
Vincent

1
@ เปิดใช้งานอะไรกับเครื่องรางลินุกซ์?
Pacerier

สำหรับ -p [pasword] จะต้องอยู่ใกล้เช่น: mysqldump -u tutorials -p'mypassword' -h 127.0.0.1 database_name > file_backup_database_name_.sql คำเตือน: การใช้รหัสผ่านบนอินเตอร์เฟสบรรทัดคำสั่งอาจไม่ปลอดภัย
Marwan Salim

19

หากต้องการส่งออกขั้นตอนฟังก์ชัน FUNCTIONs & TRIGGER ก็เพิ่ม--routinesพารามิเตอร์:

mysqldump -u YourUser -p YourDatabaseName --routines > wantedsqlfile.sql


สวิตช์--routinesสร้างความแตกต่าง :) คำแนะนำใด ๆ เกี่ยวกับวิธีการส่งออกเฉพาะขั้นตอนฟังก์ชั่น & TRIGGERs? สำหรับผู้ที่ลืมเกี่ยวกับสวิตช์และส่งออก DB "บริสุทธิ์" โดยไม่ต้อง "อัลกอริทึม" :)
38414

ต้องใช้สวิตช์สลับ--eventsเพื่อถ่ายโอนเหตุการณ์ตัวกำหนดเวลาเหตุการณ์และ TRIGGERs จะถูกส่งออกเสมอเว้นแต่--skip-triggersจะมีการระบุไว้ (ตามข้อ 7.4.5.3 โปรแกรมการบันทึกการทุ่มตลาด )
AntonK

10

ให้คำสั่งนี้เพื่อส่งออกฐานข้อมูลของคุณซึ่งจะรวมถึงวันที่ด้วย

mysqldump -u[username] -p[userpassword] --databases yourdatabase | gzip > /home/pi/database_backup/database_`date '+%m-%d-%Y'`.sql.gz

(ไม่มีช่องว่างหลังจาก -p)


โปรดทราบว่าการระบุ--databasesจะแทรกคำสั่งเป็นCREATE DATABASE XYZ;และUSE XYZ;ซึ่งไม่สะดวกเมื่อนำเข้า SQL ไปยังอีกฐานข้อมูลหนึ่งที่มีชื่ออื่น ...
24924

8

ฉันติดตั้งเซิร์ฟเวอร์ wamp ของฉันในไดรฟ์ D: ดังนั้นคุณต้องไปที่เส้นทางต่อไปนี้จากบรรทัดคำสั่ง ur -> (และถ้าหากคุณติดตั้ง wamp ur ใน c: ไดรฟ์แล้วให้แทนที่ d: wtih c: here)

D:\>cd wamp
D:\wamp>cd bin
D:\wamp\bin>cd mysql
D:\wamp\bin\mysql>cd mysql5.5.8 (whatever ur verserion will be displayed here use keyboard Tab button and select the currently working mysql version on your server if you have more than one mysql versions)
D:\wamp\bin\mysql\mysql5.5.8>cd bin
D:\wamp\bin\mysql\mysql5.5.8\bin>mysqldump -u root -p password db_name > "d:\backupfile.sql"

นี่rootคือผู้ใช้รหัสผ่าน phpmyadmin ของฉัน คือรหัสผ่านสำหรับ phpmyadmin ดังนั้นหากคุณยังไม่ได้ตั้งรหัสผ่านใด ๆ สำหรับ root เพียงแค่ไม่มีประเภทในสถานที่นั้น db_name คือฐานข้อมูล (สำหรับฐานข้อมูลที่ใช้สำรองข้อมูล) backupfile.sql ไฟล์ที่คุณต้องการสำรองข้อมูล ur ของฐานข้อมูล ur และคุณสามารถเปลี่ยนตำแหน่งไฟล์สำรองข้อมูล (d: \ backupfile.sql) จากที่อื่นในคอมพิวเตอร์ของคุณ


ในทุกวิธีที่ฉันพบว่าทำคำตอบนี้เป็นคำตอบเดียวที่เหมาะกับฉัน ฉันใช้ MySQL เวอร์ชัน 5.6 ดังนั้นพา ธ คือ ... \ MySQL \ MySQL Server 5.6 \ bin สำหรับพรอมต์คำสั่ง คุณจะต้องใช้ชื่อผู้ใช้และรหัสผ่านผู้ดูแลระบบ MySQL ของคุณที่ระบุไว้สำหรับฐานข้อมูลเฉพาะจะไม่ทำงาน ขอบคุณคุณชิน แม้แต่คำแนะนำในคู่มือ MySQL สำหรับ v.5.6 ก็ใช้ไม่ได้ ไวยากรณ์ไม่สมบูรณ์ที่นั่น
Max West

มันใช้งานได้จริงกับช่องว่างระหว่าง-pและpassword?
เดวิส


4

ปัญหาเกี่ยวกับการแก้ไขปัญหาเหล่านี้ทั้งหมด (โดยใช้>ตัวเปลี่ยนเส้นทาง) คือคุณเขียนการถ่ายโอนข้อมูลของคุณจาก stdout ซึ่งอาจทำให้การเข้ารหัสของอักขระบางตัวในฐานข้อมูลของคุณ

หากคุณมีปัญหาการเข้ารหัสตัวอักษร เช่น:

ข้อผิดพลาด 1064 (42000): คุณมีข้อผิดพลาดในไวยากรณ์ SQL ของคุณ; ตรวจสอบคู่มือที่สอดคล้องกับรุ่นเซิร์ฟเวอร์ MySQL ของคุณสำหรับไวยากรณ์ที่ถูกต้องที่จะใช้ใกล้ ...

จากนั้นคุณต้องใช้-rตัวเลือกในการเขียนไฟล์

MySQL

mysqldump -u user -pyour-password-without-space-between-letter-p-and-your-password --default-character-set=utf8 --host $HOST database-name -r dump.sql

การใช้ Docker

docker exec --rm -v $pwd:dump -it mysql:5:7 mysqldump -u user -pyour-password-without-space-between-letter-p-and-your-password --default-character-set=utf8 --host $HOST database-name -r dump/dump.sql

หมายเหตุ: สิ่งนี้จะเมานต์พา ธ ปัจจุบันเป็นการดัมพ์ภายในอินสแตนซ์

เราพบคำตอบที่นี่

ในทางกลับกันอย่าใช้<เพื่อนำเข้าดัมพ์ของคุณไปยังฐานข้อมูลอีกครั้งอักขระที่ไม่ใช่ utf8 ของคุณอาจไม่ถูกส่งผ่าน แต่ต้องการตัวเลือกแหล่งที่มา

mysql -u user -pYourPasswordYouNowKnowHow --default-character-set=utf8 your-database
mysql> SET names 'utf8'
mysql> SOURCE dump.sql

1

วากยสัมพันธ์

(mysqldump.exe full path) -u (user name) -p (password) (database name) > (export database file full path)

ตัวอย่าง

c:>d:\wamp\bin\mysql\mysql5.6.12\bin\mysqldump.exe -u root -p mydbname > d:\mydb.sql

โดยที่d: \ wamp \ bin \ mysql \ mysql5.6.12 \ bin \ mysqldump.exeจะเป็นเส้นทาง mysqldump.exe ที่แท้จริงของคุณmydbnameเป็นชื่อของฐานข้อมูลที่คุณต้องการส่งออกและd: \ mydb.sqlเป็นเส้นทางที่ คุณต้องการจัดเก็บฐานข้อมูลที่ส่งออก


0

ฉันใช้เซิร์ฟเวอร์ wamp ฉันพยายาม

c:\wamp\bin\mysql\mysql5.5.8\bin\mysqldump -uroot -p db_name > c:\somefolder\filename.sql

root เป็นชื่อผู้ใช้ของฉันสำหรับ mysql และหากคุณมีรหัสผ่านให้ระบุด้วย:

-p[yourpassword]

หวังว่ามันจะใช้งานได้


- ต้องใช้รหัสผ่านหากคุณต้องการพิมพ์รหัสผ่านเช่นกัน
Erce

0

สำหรับระบบปฏิบัติการ windows :

เมื่อคุณได้รับข้อผิดพลาด1064 mysql (42000)ขณะที่พยายามรันคำสั่งmysqldumpให้ออกจากเทอร์มินัลปัจจุบัน และรันคำสั่ง mysqldump

mysql>exit 
c:\xampp\mysql\bin>mysqldump -uroot -p --databases [database_name] > name_for_export_db.sql

0

ฉันพยายามที่จะถ่ายโอนข้อมูลของฐานข้อมูลที่ทำงานบนนักเทียบท่าและมาพร้อมกับคำสั่งด้านล่างเพื่อให้บรรลุเดียวกัน:

นักเทียบท่า exec <container_id/name>/ usr / bin / mysqldump -u <db_username>--password = <db_password> db_name> .sql

หวังว่านี่จะช่วยได้!


-2

คุณสามารถใช้สคริปต์นี้เพื่อส่งออกหรือนำเข้าฐานข้อมูลใด ๆ จากเทอร์มินัลที่ได้รับที่ลิงค์นี้: https://github.com/Ridhwanluthra/mysql_import_export_script/blob/master/mysql_import_export_script.sh

echo -e "Welcome to the import/export database utility\n"
echo -e "the default location of mysqldump file is: /opt/lampp/bin/mysqldump\n"
echo -e "the default location of mysql file is: /opt/lampp/bin/mysql\n"
read -p 'Would like you like to change the default location [y/n]: ' location_change
read -p "Please enter your username: " u_name
read -p 'Would you like to import or export a database: [import/export]: ' action
echo

mysqldump_location=/opt/lampp/bin/mysqldump
mysql_location=/opt/lampp/bin/mysql

if [ "$action" == "export" ]; then
    if [ "$location_change" == "y" ]; then
        read -p 'Give the location of mysqldump that you want to use: ' mysqldump_location
        echo
    else
        echo -e "Using default location of mysqldump\n"
    fi
    read -p 'Give the name of database in which you would like to export: ' db_name
    read -p 'Give the complete path of the .sql file in which you would like to export the database: ' sql_file
    $mysqldump_location -u $u_name -p $db_name > $sql_file
elif [ "$action" == "import" ]; then
    if [ "$location_change" == "y" ]; then
        read -p 'Give the location of mysql that you want to use: ' mysql_location
        echo
    else
        echo -e "Using default location of mysql\n"
    fi
    read -p 'Give the complete path of the .sql file you would like to import: ' sql_file
    read -p 'Give the name of database in which to import this file: ' db_name
    $mysql_location -u $u_name -p $db_name < $sql_file
else
    echo "please select a valid command"
fi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.