Tôi muốn sao chép bảng chứa từ một cơ sở dữ liệu và chèn vào một bảng cơ sở dữ liệu khác


96

Tôi muốn sao chép lược đồ của bảng cũng như dữ liệu trong bảng đó sang một bảng cơ sở dữ liệu khác trong cơ sở dữ liệu khác trên máy chủ trực tiếp. Làm thế nào tôi có thể làm điều này?


sử dụng hai kết nối cơ sở dữ liệu và đọc cấu trúc bảng từ một và chạy truy vấn đó sang kết nối khác
Dau

Các cơ sở dữ liệu này nằm trên các cá thể mysql riêng biệt hay cùng một cơ sở dữ liệu? Các trường hợp khác nhau có thể được thiết lập với nhân bản nếu đây là một quá trình liên tục.
Nick

@Nick cơ sở dữ liệu của tôi nằm trên các phiên bản mysql khác nhau. Bạn có thể giải thích làm thế nào để sao chép nó?
johk95

Câu trả lời:


218

Nếu bạn muốn sao chép một bảng từ Cơ sở dữ liệu này sang Cơ sở dữ liệu khác, Bạn chỉ cần thực hiện như bên dưới.

CREATE TABLE db2.table LIKE db1.table;
INSERT INTO db2.table SELECT * FROM db1.table;

2
Giải pháp tuyệt vời nếu bảng không có ràng buộc khóa ngoại. Tôi đã sử dụng điều này để tạo một bản sao của toàn bộ cơ sở dữ liệu thay vì chỉ một bảng. Đối với điều đó, tôi khuyên bạn nên sử dụng lệnh mysqldump.
thorne51

MySQL hiện có thể lưu trữ dữ liệu bảng trong các tệp riêng lẻ (và các tệp frm cũng nằm trên mỗi bảng). Cách tiếp cận này chắc chắn sẽ hiệu quả, nhưng với cơ sở dữ liệu khổng lồ thì nó rất chậm. Có cách nào khác không?
Alex Kovshovik

1
Điều này chỉ hoạt động nếu các cơ sở dữ liệu nằm trên cùng một máy chủ.
zgr024,

10

hoặc chỉ TẠO BẢNG db2.table CHỌN * TỪ db1.table trong MySQL 5


4
Điều này không sao chép những thứ như chỉ mục. Nó chỉ tạo một bảng dựa trên một tập hợp các bộ giá trị. Bạn có thể không muốn làm điều này.
BenMQ

Vâng truy vấn này không bản indexe
XxXk5XxX

4

Trong BASH, bạn có thể làm:

mysqldump database_1 table | mysql database_2


2

Nếu bạn chỉ muốn sao chép Cấu trúc, chỉ cần sử dụng

CREATE TABLE Db_Name.table1 LIKE DbName.table2;

Ps> sẽ không sao chép lược đồ và dữ liệu


1

chỉ cần sử dụng -

TẠO BẢNG DB2.newtablename SELECT * FROM DB1.existingtablename;


0

Trong Dòng lệnh:

mysqldump -h localhost -u username -ppassword [SCHEMA] --tables [TABLE] | mysql -h otherhost -u username -ppassword [SCHEMA2]

Thao tác này sẽ sao chép bảng bên trong SCHEMA trên máy chủ cục bộ sang SCHEMA2 trên máy chủ khác.

localhost và otherhost chỉ là tên máy chủ và có thể giống nhau hoặc khác nhau.

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.