Sử dụng PHP, làm cách nào để sao chép các bản ghi đã chọn từ cơ sở dữ liệu mysql này sang cơ sở dữ liệu mysql khác trên các máy chủ khác nhau (do đó, các kết nối khác nhau)

Đó sẽ là thiết lập sạch nhất và bạn có thể hoàn thành nhiệm vụ chỉ bằng một truy vấn nếu bạn thiết lập các bảng LIÊN KẾT để sao chép dữ liệu của mình từ máy chủ sản xuất từ ​​xa sang Cơ sở dữ liệu đào tạo vì bạn sẽ thực hiện việc này một cách thường xuyên và đang xử lý

Quan trọng. Nếu bạn sửa đổi dữ liệu trong các bảng LIÊN KẾT của cơ sở dữ liệu đào tạo, thì cơ sở dữ liệu sản xuất cũng sẽ bị ảnh hưởng. Chỉ các lối tắt từ xa đến cơ sở dữ liệu sản xuất mới tồn tại trong bảng Fed

Tương tự, sao chép dữ liệu cục bộ

_10

Bảng FED CREATE phải phù hợp với cấu trúc của bảng từ xa. Đây là một ví dụ về SQL tôi đã sử dụng để kiểm tra mã

________Đầu tiên

OP, vì bạn sẽ thực hiện việc này thường xuyên và đang xử lý hàng triệu bản ghi trên máy chủ sản xuất, tôi khuyên bạn nên thiết lập các bảng LIÊN KẾT để sao chép dữ liệu của bạn từ máy chủ sản xuất từ ​​xa sang DB đào tạo. Nó sẽ là thiết lập sạch nhất và bạn có thể sử dụng một truy vấn duy nhất để hoàn thành công việc

QUAN TRỌNG. Không chỉnh sửa dữ liệu trong các bảng LIÊN KẾT trong DB đào tạo của bạn, nếu không bạn sẽ thực hiện những thay đổi đó trong DB sản xuất. Các bảng của FED chỉ là lối tắt từ xa đến DB sản xuất

Sao chép dữ liệu cục bộ như vậy…

INSERT IGNORE INTO trainingDB.usersTable (username, email)
(SELECT username, email FROM `federated_table` WHERE username = 'xx');

Đây là SQL mẫu tôi đã sử dụng để kiểm tra mã. (Bảng FED CREATE phải khớp với cấu trúc bảng từ xa)


CREATE SERVER federatedTablelink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remoteUser', HOST 'remoteDbIP', DATABASE 'yourRemoteDbNAme', Password 'remoteDbPassword');


CREATE TABLE federated_table (
    username   VARCHAR(32) NOT NULL DEFAULT '',
    email  VARCHAR(20) NOT NULL DEFAULT '',
    INDEX username (username)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='federatedTablelink/users';

Nó cung cấp một tập lệnh trang Web và một lớp mở rộng PHP MySQLi để kết nối với một máy chủ cơ sở dữ liệu MySQL nhất định

Tập lệnh thực thi các truy vấn bằng cách sử dụng lớp để sao chép tất cả các bản ghi bảng từ một cơ sở dữ liệu trong một máy chủ sang một máy chủ khác trong cùng một máy chủ hoặc một máy chủ khác

Nó sao chép 100 bản ghi bảng cùng một lúc nếu những bản ghi đó không bị hỏng

Máy chủ MySQL gốc và đích có thể chạy các phiên bản MySQL khác nhau

Lưu ý rằng nếu máy chủ MySQL gốc gặp sự cố, bạn nên khởi động lại máy chủ trước khi sử dụng lớp này để sao chép các bản ghi

Nếu quá trình đọc từ các bảng bị hỏng mất nhiều thời gian hơn, bạn nên đặt tùy chọn giới hạn thời gian thực thi PHP ít nhất là 2 phút (120 giây)


Đối với điều này, bạn có thể sử dụng câu lệnh INSERT INTO SELECT. Trước tiên chúng ta hãy tạo một bảng -

mysql> create table DemoTable1900
   (
   ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   ClientName varchar(20),
   ClientAge int default 29
   ) auto_increment=1000;
Query OK, 0 rows affected (0.00 sec)

Chèn một số bản ghi vào bảng bằng lệnh chèn -

mysql> insert into DemoTable1900(ClientName,ClientAge) values('Chris',45);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1900(ClientName,ClientAge) values('David',29);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1900(ClientName,ClientAge) values('Mike',37);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1900(ClientName) values('Sam');
Query OK, 1 row affected (0.00 sec)

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -

mysql> select * from DemoTable1900;

Điều này sẽ tạo ra đầu ra sau -

+----------+------------+-----------+
| ClientId | ClientName | ClientAge |
+----------+------------+-----------+
|     1000 | Chris      |        45 |
|     1001 | David      |        29 |
|     1002 | Mike       |        37 |
|     1003 | Sam        |        29 |
+----------+------------+-----------+
4 rows in set (0.00 sec)

Đây là truy vấn để tạo bảng thứ hai -

mysql> create table DemoTable1901
   (
   EmployeeId int,
   EmployeeName varchar(20),
   EmployeeAge int
   );
Query OK, 0 rows affected (0.00 sec)

Đây là truy vấn để sao chép các bản ghi từ bảng này sang bảng khác với các cột khác nhau -

mysql> insert into DemoTable1901(EmployeeId,EmployeeName,EmployeeAge)
   select ClientId,ClientName,
   ClientAge from DemoTable1900;
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -

________số 8

Điều này sẽ tạo ra đầu ra sau -

+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
|       1000 | Chris        |          45 |
|       1001 | David        |          29 |
|       1002 | Mike         |          37 |
|       1003 | Sam          |          29 |
+------------+--------------+-------------+
4 rows in set (0.00 sec)

Sử dụng PHP, làm cách nào để sao chép các bản ghi đã chọn từ cơ sở dữ liệu mysql này sang cơ sở dữ liệu mysql khác trên các máy chủ khác nhau (do đó, các kết nối khác nhau)

Cập nhật ngày 27-Dec-2019 07. 09. 41

Chiến lược sao chép dữ liệu này rất hữu ích trong


CREATE SERVER federatedTablelink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remoteUser', HOST 'remoteDbIP', DATABASE 'yourRemoteDbNAme', Password 'remoteDbPassword');


CREATE TABLE federated_table (
    username   VARCHAR(32) NOT NULL DEFAULT '',
    email  VARCHAR(20) NOT NULL DEFAULT '',
    INDEX username (username)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='federatedTablelink/users';
4. Do sao chép dữ liệu, dữ liệu có thể được cung cấp cho các máy chủ khác nhau và được cung cấp cho tất cả người dùng mà không có bất kỳ sự mâu thuẫn nào

Lợi ích của việc sao chép dữ liệu bao gồm tăng tính khả dụng và độ tin cậy của dữ liệu và ít chi phí liên lạc hơn. Chúng tôi có thể sao chép toàn bộ hoặc một phần cơ sở dữ liệu từ máy chủ cơ sở dữ liệu này sang máy chủ cơ sở dữ liệu khác

Trong hướng dẫn này, chúng ta sẽ xem cách sao chép dữ liệu trong MySQL (với cùng một người dùng), MS SQL Server (với cùng một người dùng) và từ MySQL sang MS SQL Server (có những người dùng khác nhau)

Sử dụng máy chủ MySQL

Chúng tôi có hai cơ sở dữ liệu có tên là


CREATE SERVER federatedTablelink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remoteUser', HOST 'remoteDbIP', DATABASE 'yourRemoteDbNAme', Password 'remoteDbPassword');


CREATE TABLE federated_table (
    username   VARCHAR(32) NOT NULL DEFAULT '',
    email  VARCHAR(20) NOT NULL DEFAULT '',
    INDEX username (username)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='federatedTablelink/users';
5 và

CREATE SERVER federatedTablelink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remoteUser', HOST 'remoteDbIP', DATABASE 'yourRemoteDbNAme', Password 'remoteDbPassword');


CREATE TABLE federated_table (
    username   VARCHAR(32) NOT NULL DEFAULT '',
    email  VARCHAR(20) NOT NULL DEFAULT '',
    INDEX username (username)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='federatedTablelink/users';
6 trong Máy chủ MySQL của chúng tôi. Cơ sở dữ liệu

CREATE SERVER federatedTablelink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remoteUser', HOST 'remoteDbIP', DATABASE 'yourRemoteDbNAme', Password 'remoteDbPassword');


CREATE TABLE federated_table (
    username   VARCHAR(32) NOT NULL DEFAULT '',
    email  VARCHAR(20) NOT NULL DEFAULT '',
    INDEX username (username)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='federatedTablelink/users';
6 có một bảng tên là

CREATE SERVER federatedTablelink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remoteUser', HOST 'remoteDbIP', DATABASE 'yourRemoteDbNAme', Password 'remoteDbPassword');


CREATE TABLE federated_table (
    username   VARCHAR(32) NOT NULL DEFAULT '',
    email  VARCHAR(20) NOT NULL DEFAULT '',
    INDEX username (username)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='federatedTablelink/users';
8 và cơ sở dữ liệu

CREATE SERVER federatedTablelink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remoteUser', HOST 'remoteDbIP', DATABASE 'yourRemoteDbNAme', Password 'remoteDbPassword');


CREATE TABLE federated_table (
    username   VARCHAR(32) NOT NULL DEFAULT '',
    email  VARCHAR(20) NOT NULL DEFAULT '',
    INDEX username (username)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='federatedTablelink/users';
5 có một bảng tên là
mysql> create table DemoTable1900
   (
   ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   ClientName varchar(20),
   ClientAge int default 29
   ) auto_increment=1000;
Query OK, 0 rows affected (0.00 sec)
0 mà chúng tôi muốn sao chép vào cơ sở dữ liệu

CREATE SERVER federatedTablelink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remoteUser', HOST 'remoteDbIP', DATABASE 'yourRemoteDbNAme', Password 'remoteDbPassword');


CREATE TABLE federated_table (
    username   VARCHAR(32) NOT NULL DEFAULT '',
    email  VARCHAR(20) NOT NULL DEFAULT '',
    INDEX username (username)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='federatedTablelink/users';
6

Điều quan trọng cần lưu ý là chúng tôi sao chép dữ liệu trong một máy chủ (MySQL 8. 0. 27) với một người dùng (root). Chúng tôi có các cơ sở dữ liệu sau (xem hộp màu đỏ) và bảng (xem hộp màu xanh lá cây)

Sử dụng PHP, làm cách nào để sao chép các bản ghi đã chọn từ cơ sở dữ liệu mysql này sang cơ sở dữ liệu mysql khác trên các máy chủ khác nhau (do đó, các kết nối khác nhau)

Trong ảnh chụp màn hình sau, đảm bảo rằng nguồn dữ liệu là


CREATE SERVER federatedTablelink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remoteUser', HOST 'remoteDbIP', DATABASE 'yourRemoteDbNAme', Password 'remoteDbPassword');


CREATE TABLE federated_table (
    username   VARCHAR(32) NOT NULL DEFAULT '',
    email  VARCHAR(20) NOT NULL DEFAULT '',
    INDEX username (username)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='federatedTablelink/users';
51, viết tên cơ sở dữ liệu MySQL, số cổng và máy chủ lần lượt là

CREATE SERVER federatedTablelink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remoteUser', HOST 'remoteDbIP', DATABASE 'yourRemoteDbNAme', Password 'remoteDbPassword');


CREATE TABLE federated_table (
    username   VARCHAR(32) NOT NULL DEFAULT '',
    email  VARCHAR(20) NOT NULL DEFAULT '',
    INDEX username (username)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='federatedTablelink/users';
5,

CREATE SERVER federatedTablelink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remoteUser', HOST 'remoteDbIP', DATABASE 'yourRemoteDbNAme', Password 'remoteDbPassword');


CREATE TABLE federated_table (
    username   VARCHAR(32) NOT NULL DEFAULT '',
    email  VARCHAR(20) NOT NULL DEFAULT '',
    INDEX username (username)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='federatedTablelink/users';
53 và

CREATE SERVER federatedTablelink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remoteUser', HOST 'remoteDbIP', DATABASE 'yourRemoteDbNAme', Password 'remoteDbPassword');


CREATE TABLE federated_table (
    username   VARCHAR(32) NOT NULL DEFAULT '',
    email  VARCHAR(20) NOT NULL DEFAULT '',
    INDEX username (username)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='federatedTablelink/users';
54. Sau đó, nhấp vào Tiếp theo

Điều quan trọng cần lưu ý là bạn có thể có các tên cơ sở dữ liệu và Địa chỉ IP Máy chủ khác nhau. Chúng tôi đang sử dụng hai máy chủ trên cùng một máy;

copy data from one database to another - select source port server in mssql server

Nhập


CREATE SERVER federatedTablelink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remoteUser', HOST 'remoteDbIP', DATABASE 'yourRemoteDbNAme', Password 'remoteDbPassword');


CREATE TABLE federated_table (
    username   VARCHAR(32) NOT NULL DEFAULT '',
    email  VARCHAR(20) NOT NULL DEFAULT '',
    INDEX username (username)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='federatedTablelink/users';
56 và

CREATE SERVER federatedTablelink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remoteUser', HOST 'remoteDbIP', DATABASE 'yourRemoteDbNAme', Password 'remoteDbPassword');


CREATE TABLE federated_table (
    username   VARCHAR(32) NOT NULL DEFAULT '',
    email  VARCHAR(20) NOT NULL DEFAULT '',
    INDEX username (username)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='federatedTablelink/users';
57 của MySQL Server (xem ảnh chụp màn hình bên dưới) và nhấp vào Tiếp theo

copy data from one database to another - user login info

Đảm bảo rằng đích được chọn là


CREATE SERVER federatedTablelink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remoteUser', HOST 'remoteDbIP', DATABASE 'yourRemoteDbNAme', Password 'remoteDbPassword');


CREATE TABLE federated_table (
    username   VARCHAR(32) NOT NULL DEFAULT '',
    email  VARCHAR(20) NOT NULL DEFAULT '',
    INDEX username (username)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='federatedTablelink/users';
58, xác nhận tên máy chủ và tên cơ sở dữ liệu của bạn và chọn xác thực. Chúng tôi đang sử dụng Xác thực Windows cho hướng dẫn này. Sau đó nhấp vào Tiếp theo

copy data from one database to another - select destination in mssql server

Nhấn Next trên màn hình sau

copy data from one database to another - write query part a in mssql server

Viết truy vấn SQL theo yêu cầu của bạn; . Nhấn tiếp

copy data from one database to another - write query part b in mssql server

Viết tên bảng Đích của bạn (tên sẽ xuất hiện trong MS SQL Server) và nhấp vào Tiếp theo

copy data from one database to another - destination table name in mssql server

Nhấp vào Tiếp theo trên màn hình được cung cấp bên dưới

copy data from one database to another - info in mssql server

Trong ảnh chụp màn hình sau, chọn


CREATE SERVER federatedTablelink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER 'remoteUser', HOST 'remoteDbIP', DATABASE 'yourRemoteDbNAme', Password 'remoteDbPassword');


CREATE TABLE federated_table (
    username   VARCHAR(32) NOT NULL DEFAULT '',
    email  VARCHAR(20) NOT NULL DEFAULT '',
    INDEX username (username)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='federatedTablelink/users';
60 (xem hộp màu xanh lá cây) hoặc bạn có thể lưu gói và chạy sau (xem hộp màu đỏ). Nhấn tiếp

copy data from one database to another - run now in mssql server

Nhấp vào Kết thúc trên màn hình sau

copy data from one database to another - complete wizard in mssql server

Tại đây, màn hình sau cho biết dữ liệu đã được sao chép. Nhấp vào Đóng

copy data from one database to another - successful transfer in mssql server

Kiểm tra Máy chủ MS SQL của bạn để biết bảng đã sao chép và bạn có thể thấy hộp màu xanh lá cây trong ảnh chụp màn hình sau

copy data from one database to another - after copying mysql to mssql server

Sự kết luận

Xem xét các cuộc thảo luận ở trên, chúng tôi đã kết luận rằng việc sao chép dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác là điều quan trọng cần tìm hiểu vì nhiều lý do, bao gồm các lo ngại về bảo mật, tính khả dụng của dữ liệu và độ tin cậy, v.v. Chúng tôi cũng có thể cung cấp quyền truy cập dữ liệu cho những người dùng khác nhau trên toàn thế giới

Làm cách nào để sao chép dữ liệu từ cơ sở dữ liệu MySQL này sang cơ sở dữ liệu MySQL khác?

Cách nhanh nhất để sao chép bảng trong MySQL. .
Nhấp chuột phải vào bảng bạn muốn sao chép trong Database Explorer và chọn Duplicate Object
Trong hộp thoại mở ra, chọn db đích
Chọn chỉ sao chép dữ liệu hoặc cấu trúc bảng
Chỉ định tên của bảng mới và bấm OK

Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong MySQL bằng PHP?

Làm theo các bước bên dưới. .
Mở máy chủ XAMPP và khởi động Apache và MySQL
Mở trình duyệt của bạn và gõ “localhost/phpmyadmin”. Tạo một cơ sở dữ liệu có tên là geeks_database
Bây giờ hãy tạo một bảng có tên table1 với 4 cột và nhấp vào lưu
Bây giờ hãy mở cột SQL trong máy chủ cơ sở dữ liệu và chèn các bản ghi vào đó

Làm cách nào để sao chép dữ liệu từ máy chủ này sang máy chủ khác trong máy chủ MySQL bằng truy vấn?

Nếu chúng ta muốn sao chép bảng hoặc cơ sở dữ liệu từ máy chủ MySQL này sang máy chủ MySQL khác, thì hãy sử dụng mysqldump với tên cơ sở dữ liệu và tên bảng . Chạy lệnh sau tại máy chủ nguồn. Điều này sẽ kết xuất cơ sở dữ liệu hoàn chỉnh vào kết xuất. tập tin txt.

Làm cách nào tôi có thể sao chép cơ sở dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trong phpMyAdmin?

Chọn cơ sở dữ liệu bạn muốn sao chép (bằng cách nhấp vào cơ sở dữ liệu từ màn hình chính của phpMyAdmin). Khi đã ở trong cơ sở dữ liệu, hãy chọn tab Hoạt động. Cuộn xuống phần có ghi Sao chép cơ sở dữ liệu vào. Nhập tên của cơ sở dữ liệu mới