Làm cách nào để sao lưu một bảng trong cơ sở dữ liệu MySQL?


441

Theo mặc định, mysqldumpcó bản sao lưu của toàn bộ cơ sở dữ liệu. Tôi cần sao lưu một bảng duy nhất trong MySQL. Có thể không? Làm thế nào để tôi khôi phục nó?

Câu trả lời:


838

Kết xuất và khôi phục một bảng duy nhất từ ​​.sql

Đổ

mysqldump db_name table_name > table_name.sql

Bán phá giá từ cơ sở dữ liệu từ xa

mysqldump -u <db_username> -h <db_host> -p db_name table_name > table_name.sql

Để tham khảo thêm:

http://www.abbeyworkshop.com/howto/lamp/MySQL_Export_Backup/index.html

Khôi phục

mysql -u <user_name> -p db_name
mysql> source <full_path>/table_name.sql

hoặc trong một dòng

mysql -u username -p db_name < /path/to/table_name.sql


Kết xuất và khôi phục một bảng duy nhất từ ​​định dạng nén (.sql.gz)

Tín dụng: John McGrath

Đổ

mysqldump db_name table_name | gzip > table_name.sql.gz

Khôi phục

gunzip < table_name.sql.gz | mysql -u username -p db_name


13
SQL thường nén tốt - bạn có thể dẫn lệnh ở trên thông qua gzip và tệp kết quả sẽ nhỏ hơn nhiều: mysqldump db_name table_name | gzip > table_name.sql.gz để khôi phục: gunzip < table_name.sql.gz | mysql -u username -p db_name
John McGrath

Nếu bạn muốn bao gồm mật khẩu trên dòng lệnh thì sao? Vì vậy, bạn đã sử dụng -pPASSWORD
Freedo

23

mysqldump có thể lấy tham số tbl_name để nó chỉ sao lưu các bảng đã cho.

mysqldump -u -p yourdb yourtable > c:\backups\backup.sql

15

thử

for line in $(mysql -u... -p... -AN -e "show tables from NameDataBase");
do 
mysqldump -u... -p.... NameDataBase $line > $line.sql ; 
done
  • Bảng tên cotent $ dòng;)

1
Điều này rất hữu ích cho việc kết xuất cơ sở dữ liệu vào các truy vấn bảng riêng biệt - tôi có thể biết chính xác các tùy chọn làm gì không?
xiankai

Xin chào, -AN (- no-auto-Rehash, -A | --skip-cột-name, -N Không viết tên cột trong kết quả.) -E (- exec = statement, -e statement | Thực thi lệnh tuyên bố và thoát. Định dạng đầu ra mặc định giống như được tạo bằng --batch.) fuente: dev.mysql.com/doc/refman/5.6/en/mysql-command-options.html
Robin Gomez

12

Chúng ta có thể lấy một bãi chứa mysql của bất kỳ bảng cụ thể nào với bất kỳ điều kiện cụ thể nào như dưới đây

mysqldump -uusername -p -hhost databasename tablename --skip-lock-tables

Nếu chúng ta muốn thêm một điều kiện cụ thể trên bảng thì chúng ta có thể sử dụng lệnh sau

mysqldump -uusername -p -hhost databasename tablename --where="date=20140501" --skip-lock-tables

8

Bạn có thể dễ dàng sử dụng để kết xuất các bảng đã chọn bằng cách sử dụng MYSQLWorkbench tool, riêng lẻ hoặc nhóm các bảng tại một bãi chứa sau đó nhập nó như sau: bạn cũng có thể thêm thông tin máy chủ nếu bạn đang chạy nó trong địa phương của mình bằng cách thêm -h IP.ADDRESS.NUMBER sau-u tên tài khoản

mysql -u root -p databasename < dumpfileFOurTableInOneDump.sql 

Thật không may, Mysql Workbench có một số vấn đề có thể dẫn đến việc xuất dữ liệu không hợp lệ ... vô dụng ...
barell

6

Bạn có thể sử dụng mã này:

Ví dụ này lấy một bản sao lưu của cơ sở dữ liệu sugarcrm và chuyển đầu ra sang sugarcrm.sql

# mysqldump -u root -ptmppassword sugarcrm > sugarcrm.sql

# mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql

Sugarcrm.sql sẽ chứa bảng thả, tạo bảng và chèn lệnh cho tất cả các bảng trong cơ sở dữ liệu sugarcrm. Dưới đây là một đầu ra một phần của sugarcrm.sql, hiển thị thông tin kết xuất của bảng Tài khoản_contacts:

-

- Cấu trúc bảng cho bảng accounts_contacts

DROP TABLE IF EXISTS `accounts_contacts`;
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `accounts_contacts` (
`id` varchar(36) NOT NULL,
`contact_id` varchar(36) default NULL,
`account_id` varchar(36) default NULL,
`date_modified` datetime default NULL,
`deleted` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `idx_account_contact` (`account_id`,`contact_id`),
KEY `idx_contid_del_accid` (`contact_id`,`deleted`,`account_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;

--

5

Bạn có thể sử dụng mã dưới đây:

  1. Đối với cấu trúc bảng đơn

-

mysqldump -d <database name> <tablename> > <filename.sql>
  1. Đối với cấu trúc bảng đơn có dữ liệu

-

mysqldump <database name> <tablename> > <filename.sql>

Hy vọng nó sẽ giúp.


5

Bạn có thể sử dụng mysqldumptừ dòng lệnh:

mysqldump -u username -p password dbname tablename > "path where you want to dump"

Bạn cũng có thể sử dụng MySQL Workbench:

Chuyển sang trái> Xuất dữ liệu> Chọn Lược đồ> Chọn bảng và nhấp vào Xuất


chỉ là một thông tin nhỏ, bỏ qua khoảng trắng giữa -p và mật khẩu -> -ppassword, nhưng nó không an toàn
Agung Sagita
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.