Làm cách nào để xuất cơ sở dữ liệu mysql bằng Command Prompt?


342

Tôi có một cơ sở dữ liệu khá lớn nên tôi muốn xuất nó bằng Command Prompt nhưng tôi không biết làm thế nào.

Tôi đang sử dụng WAMP.


6
DOS? bạn đang sử dụng Windows 98? Hay bạn có nghĩa là dấu nhắc lệnh?
jle

Trong số bạn đang sử dụng wamp, bạn cũng nên có phpmyadmin, với tùy chọn xuất
Lars C. Magnusson

Câu trả lời:


536

Trước tiên hãy kiểm tra xem dòng lệnh của bạn có nhận ra lệnh mysql không. Nếu không đi đến lệnh & gõ vào:

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

Sau đó sử dụng lệnh này để xuất cơ sở dữ liệu của bạn:

mysqldump -u YourUser -p YourDatabaseName > wantedsqlfile.sql

Sau đó, bạn sẽ được nhắc nhập mật khẩu cơ sở dữ liệu .

Thao tác này xuất cơ sở dữ liệu sang đường dẫn bạn hiện đang sử dụng, trong khi thực hiện lệnh này

Lưu ý: Dưới đây là một số hướng dẫn chi tiết về cả nhập và xuất


7
nó báo lỗi "mysqldump: Có lỗi: 1049: Cơ sở dữ liệu không xác định 'mật khẩu' khi chọn cơ sở dữ liệu" nhưng hoạt động khi tôi xóa "-p userpassword"
Ateş Danış

11
@ AteşDanış Không có khoảng trống giữa -pthepassword.
Charles Wood

44
Bạn chỉ nên sử dụng -pvà sau đó sẽ được nhắc nhập mật khẩu. Bằng cách này bạn tránh phải mật khẩu của bạn được lưu ví dụ trong.bash_history
Nuala

7
Đối với tôi, lệnh này hoạt động: mysqldump -u YourUser -p YourDatabaseName> Wantsqlfile.sql ( Nhập lệnh, nhấn enter và sau đó Mật khẩu sẽ được nhập).
shasi kanth

3
Chỉ định mật khẩu trên dòng lệnh nên được coi là không an toàn.
vui vẻ

112

Chỉ cần sử dụng lệnh sau đây,

Để xuất khẩu:

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

Đối với nhập khẩu:

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

Lưu ý: Không có khoảng cách giữa từ khóa '-p' và mật khẩu của bạn.


1
Tôi nghĩ rằng bạn đã bỏ lỡ thực tế là anh ấy đang sử dụng WAMP - Windows ... gunzip / gzip không được gói cùng với Windows. Có thể có thể chạy lệnh của bạn sau khi cài đặt một số thứ, nhưng tôi nghĩ rằng bạn đã bỏ lỡ thực tế đó.
Rolf

2
Việc chỉ định gzip -9làm cho tệp kết quả nhỏ hơn một chút, vì nén tối đa được sử dụng.
AntonK

39

Trước hết, nhắc lệnh mở sau đó mở thư mục bin trong cmd (tôi hy vọng bạn biết với các lệnh cmd ) đi đến thư mục bin của thư mục MySql của bạn trong các tệp chương trình WAMP .

chạy lệnh

mysqldump -u db_username -p database_name > path_where_to_save_sql_file

nhấn enter hệ thống sẽ xuất cơ sở dữ liệu cụ thể và tạo tập tin sql đến vị trí nhất định.

tôi hy vọng bạn hiểu nó :) nếu bạn có bất kỳ câu hỏi nào xin vui lòng cho tôi biết.


Bạn tôi đã cố gắng giải thích quá trình một chút. thay vì đưa ra mệnh lệnh trực tiếp
Mitesh vaghela

38

Vâng, bạn có thể sử dụng lệnh dưới đây,

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

và tệp được tạo sẽ có sẵn trong cùng thư mục mà bạn đã chạy lệnh này.

Bạn có thể tìm thêm về tài liệu tham khảo chính thức cho mysqldump: Nhập xuất MySQL DB

Lưu ý : sử dụng --databasesthay vì --databasekể từ lần cuối không còn được hỗ trợ.

Thưởng thức :)


4
Đối với những người gặp lỗi như "Truy cập bị từ chối khi sử dụng LOCK TABLES", bạn nên thêm tham số "--single-giao dịch" vào lệnh.
Skyrpex

Tôi đã có một lỗi mysqldump: [ERROR] unknown option '--database'nhưng loại trừ --databasenó đã làm việc.
hejdav

@Skyrpex Cảm ơn, đó là giải pháp tôi đang tìm kiếm.
Martijn

22

Đi đến dấu nhắc lệnh tại đường dẫn này,

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

Sau đó đưa ra lệnh này để xuất cơ sở dữ liệu của bạn ( không có khoảng trắng sau -p )

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


21

Xác định vị trí cá thể mysql của bạn với:

which mysql

Nếu điều này là chính xác thì hãy xuất với mục sau (khác điều hướng đến phiên bản mysql trong thư mục mamp của bạn trong bin):

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

Và nếu bạn muốn nén nó vào thời điểm đó:

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

Sau đó, bạn có thể di chuyển tệp này giữa các máy chủ với:

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

(trong đó xxx.xxx.xxx.xxx là địa chỉ IP của máy chủ)

Và sau đó nhập nó với:

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

4
Một lần nữa, W AMP => Windows. đó là một lệnh Linux. gunzip / gzip không được đóng gói với Windows - và có thể không khả dụng. scp ... bạn nhận được điểm.
Rolf

Câu trả lời của Opentuned là tuyệt vời . Một điều nhỏ là loại bỏ thực tế passwordkhỏi dòng lệnh: mysqldump -u [tên người dùng] -p [dbname]> filename.sql Điều này ngăn mọi người tìm kiếm lịch sử của bạn để tìm mật khẩu.
Vincent

1
@Opentuned, Điều gì với các tôn sùng linux?
Pacerier 13/03/2015

for -p [pasword] phải ở gần, ví dụ: mysqldump -u tutorials -p'mypassword' -h 127.0.0.1 database_name > file_backup_database_name_.sql Cảnh báo: Sử dụng mật khẩu trên giao diện dòng lệnh có thể không an toàn.
Marwan Salim

19

Để xuất PROCEDURE, FUNCTION & TRIGGER cũng vậy, thêm --routinestham số:

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


Công tắc --routinestạo ra sự khác biệt :) Bất kỳ gợi ý nào về cách chỉ xuất các THỦ TỤC, CHỨC NĂNG & TRIGGER? Dành cho những người đã quên công tắc và xuất DB "thuần túy" mà không có "thuật toán" :)
AntonK

BTW --eventscần có công tắc để kết xuất các sự kiện Trình lập lịch sự kiện và TRIGGER luôn được xuất trừ khi --skip-triggersđược chỉ định (theo 7.4.5.3 Các chương trình lưu trữ bị
hủy

10

Đưa ra lệnh này để xuất cơ sở dữ liệu của bạn, điều này cũng sẽ bao gồm ngày

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

(không có khoảng trắng sau -p)


Lưu ý, việc chỉ định đó --databasessẽ chèn các câu lệnh CREATE DATABASE XYZ;USE XYZ;, không hữu ích khi nhập SQL vào một DB khác với tên khác ...
AntonK

8

Tôi đã cài đặt máy chủ wamp của mình trong ổ D: vì vậy bạn phải đi đến đường dẫn sau từ dòng lệnh ur -> (và nếu bạn đã cài đặt ur wamp trong c: drive thì chỉ cần thay thế d: wtih c: tại đây)

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"

Ở đây root là người dùng mật khẩu phpmyadmin của tôi là mật khẩu cho phpmyadmin, vì vậy nếu bạn chưa đặt bất kỳ mật khẩu nào cho root thì không có gì ở đó, db_name là cơ sở dữ liệu (mà cơ sở dữ liệu của bạn đang sao lưu), backupfile.sql là tệp trong đó bạn muốn sao lưu cơ sở dữ liệu của bạn và bạn cũng có thể thay đổi vị trí tệp sao lưu (d: \ backupfile.sql) từ bất kỳ nơi nào khác trên máy tính của bạn


Trong tất cả các cách tôi tìm thấy để làm điều này, câu trả lời này là cách duy nhất làm việc cho tôi. Tôi đang sử dụng MySQL phiên bản 5.6, vì vậy đường dẫn là ... \ MySQL \ MySQL Server 5.6 \ bin cho dấu nhắc lệnh. Bạn sẽ phải sử dụng tên người dùng và mật khẩu quản trị viên MySQL của mình, những mật khẩu được chỉ định cho một cơ sở dữ liệu cụ thể sẽ không hoạt động. Cảm ơn bạn Sachin. Ngay cả các hướng dẫn trong hướng dẫn sử dụng MySQL cho v.5.6 cũng không hoạt động. Cú pháp không đầy đủ ở đó.
Max West

Nó thực sự làm việc với không gian giữa -ppassword?
Davis

7
mysqldump -h [host] -p -u [user] [database name] > filename.sql

Ví dụ trong localhost

mysqldump -h localhost -p -u root cookbook > cookbook.sql

4

Vấn đề với tất cả các giải pháp này (sử dụng >ký tự chuyển hướng) là bạn viết kết xuất của bạn từ thiết bị xuất chuẩn có thể phá vỡ mã hóa của một số ký tự trong cơ sở dữ liệu của bạn.

Nếu bạn có một vấn đề mã hóa ký tự. Nhu la :

LRI 1064 (42000): Bạn có lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn để biết đúng cú pháp sử dụng gần ...

sau đó, bạn PHẢI sử dụng -rtùy chọn để ghi tệp.

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

Sử dụng 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

Lưu ý: điều này gắn kết đường dẫn hiện tại dưới dạng kết xuất bên trong thể hiện.

Chúng tôi tìm thấy câu trả lời ở đây

Ngược lại, không sử dụng <để nhập kết xuất của bạn vào cơ sở dữ liệu của bạn, một lần nữa, các ký tự không phải là utf8 của bạn có thể không được thông qua; nhưng thích tùy chọn nguồn.

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

1

Cú pháp

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

Thí dụ

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

trong đó d: \ wamp \ bin \ mysql \ mysql5.6.12 \ bin \ mysqldump.exe sẽ là đường dẫn mysqldump.exe thực tế của bạn, mydbname là tên của cơ sở dữ liệu mà bạn muốn xuất và d: \ mydb.sql là đường dẫn trong đó bạn muốn lưu trữ cơ sở dữ liệu đã xuất.


0

Tôi đã sử dụng máy chủ wamp. Tôi đã thử

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

root là tên người dùng của tôi cho mysql và nếu bạn có bất kỳ mật khẩu nào, hãy chỉ định nó với:

-p[yourpassword]

Hy vọng nó hoạt động.


--password cần được sử dụng nếu bạn cũng muốn nhập mật khẩu
Erce 15/03/19

0

Đối với hệ điều hành windows :

Khi bạn gặp lỗi 1064 mysql (42000) trong khi cố gắng thực thi lệnh mysqldump , hãy thoát khỏi thiết bị đầu cuối hiện tại. Và thực hiện lệnh mysqldump.

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

0

Tôi đã cố gắng lấy bãi chứa db đang chạy trên docker và đưa ra lệnh dưới đây để đạt được điều tương tự:

docker exec <container_id/name>/ usr / bin / mysqldump -u <db_username>--password = <db_password> db_name> .sql

Hi vọng điêu nay co ich!


-2

Bạn có thể sử dụng tập lệnh này để xuất hoặc nhập bất kỳ cơ sở dữ liệu nào từ thiết bị đầu cuối được cung cấp tại liên kết này: 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.