2010-02-26 29 views
52

Có thể nhập một cơ sở dữ liệu đơn lẻ từ mysqldump --all-databases không? Tôi đoán tôi có thể sửa đổi các tập tin bằng tay nhưng tự hỏi nếu có bất kỳ tùy chọn dòng lệnh để làm điều này.Nhập cơ sở dữ liệu đơn lẻ từ --all-databases dump

Tôi đang di chuyển máy chủ và có rất nhiều cơ sở dữ liệu, hầu hết trong số đó tôi hiện không cần hoặc muốn vào lúc này nhưng muốn có tùy chọn khôi phục một tài khoản duy nhất nếu cần.

Trả lời

70

mysqldump đầu ra chỉ là một bộ câu hỏi SQL.

Bạn có thể cung cấp cơ sở dữ liệu mong muốn trong dòng lệnh và bỏ qua các lệnh chống lại các cơ sở dữ liệu khác sử dụng:

mysql -D mydatabase -o < dump.sql 

này sẽ chỉ thực hiện các lệnh khi mydatabase được sử dụng

+0

Cảm ơn câu trả lời nhanh chóng! Tuyệt vời. – savageguy

+2

Rất hữu ích cho tôi, Cảm ơn !! bạn có thể thêm - các khóa có thể xóa được để tránh các lỗi của khóa ngoài;) mysql -u user -D - cơ sở dữ liệu khóa -disable -o davidselo

+15

Đây là câu trả lời rất liều lĩnh và cực kỳ nguy hiểm. Nếu bạn khởi chạy 'mysqldump --all-databases', đầu ra mysqldump sẽ chứa' DROP DATABASE IF EXISTS dbname; CREATE DATABASE dbname; SỬ DỤNG dbname; 'cho mọi cơ sở dữ liệu trong cá thể MySQL, bao gồm lược đồ mysql. Vui lòng xem tài liệu mysqldump: http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html#option_mysqldump_all-databases. Điều đó có nghĩa là mọi cơ sở dữ liệu sẽ vô tình bị ghi đè. Bạn có thể cung cấp bằng chứng rằng nó sẽ bỏ qua tất cả cơ sở dữ liệu nhưng một ??? LƯU Ý: Bạn có thể làm điều này để các bản ghi nhị phân bằng cách sử dụng mysqlbinlog. – RolandoMySQLDBA

48

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

mysql -u root -p --one-database destdbname < alldatabases.sql 

Nơi cơ sở dữ liệu bạn muốn khôi phục.

Một tùy chọn khác là IMHO an toàn hơn nhiều, là trích xuất DB từ bãi chứa --all-databases. Ví dụ:

sed -n '/^-- Current Database: `dbname`/,/^-- Current Database: `/p' alldatabases.sql > output.sql 

Thay thế dbname bằng tên cơ sở dữ liệu mong muốn. alldatabases.sql là tên của tệp sql-dump của bạn. Bằng cách đó bạn sẽ có DB riêng biệt trên tập tin, và sau đó bạn có thể khôi phục bằng cách sử dụng một lệnh mysql đơn giản.

Chúc may mắn

(Tín đi: Darren Mothersele - xem his page)

+2

Giải pháp tuyệt vời! Điều này nói rằng tôi đã phải thêm tiêu đề kết xuất ban đầu để tránh một số lỗi ... – neuro

Các vấn đề liên quan