Để thực hiện việc này, bạn cần sử dụng câu lệnh INSERT SELECT. Cú pháp như sau:
INSERT INTO yourDatabaseName1.yourTableName1(yourColumnName1,yourColumnName2,....N) SELECT yourColumnName1,yourColumnName2,....N FROM yourdatabaseName2.yourTableName2;
Ở đây tôi sử dụng hai database:
- sample
- test
Tạo bảng đầu tiên trong database "test":
<send>
mysql> use test;
Database changed
mysql> create table send
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(20)
-> );
Query OK, 0 rows affected (1.19 sec)
Chèn bản ghi vào bảng đầu tiên:
mysql> insert into send(Name) values('John');
Query OK, 1 row affected (0.20 sec)
mysql> insert into send(Name) values('Carol');
Query OK, 1 row affected (0.40 sec)
Hiển thị bản ghi từ bảng:
mysql> select * from send;
Kết quả:
+----+-------+ | Id | Name | +----+-------+ | 1 | John | | 2 | Carol | +----+-------+ 2 rows in set (0.00 sec)
Tạo bảng thứ hai trong database "sample":
<receive>
mysql> use sample;
Database changed
mysql> create table receive
-> (
-> UserId int,
-> UserName varchar(20)
-> );
Query OK, 0 rows affected (0.59 sec)
Bảng "receive" chưa có bản ghi nào. Di chuyển dữ liệu giữa 2 bảng với cột khác nhau trong các database khác nhau:
mysql> insert into sample.receive(UserId,UserName) -> select Id,Name from test.send; Query OK, 2 rows affected (0.21 sec) Records: 2 Duplicates: 0 Warnings: 0
Hiển thị bản ghi từ bảng sample.receive:
mysql> select * from receive;
Kết quả cho thấy dữ liệu đã được di chuyển thành công:
+--------+----------+ | UserId | UserName | +--------+----------+ | 1 | John | | 2 | Carol | +--------+----------+ 2 rows in set (0.00 sec)