集群中使用 INSERT INTO 实现表中数据迁移(MySQL 模式)

使用 INSERT INTO 实现表中数据迁移(MySQL 模式)

使用 INSERT INTO 和 MERGE INTO 语句实现表与表之间的数据迁移。

需求:将表 tbl1 中符合条件(age > 10 )的数据插入表 tbl2 中。

说明:表 tbl1tbl2 已创建。

连接集群

使用 root 用户登录 obcluster 集群的 mysql_tenant 租户。

obclient -h127.0.0.1 -P2883 -uroot@mysql_tenant#obcluster -Dtestdb -A

查看源表 tbl1 结构和表中的数据

SELECT * FROM tbl1;

输出结果如下:

obclient(root@mysql_tenant)[testdb]> SELECT * FROM tbl1;
+------+-------+------+
| id   | name  | age  |
+------+-------+------+
|    1 | Tom   |   10 |
|    2 | Tina  |    5 |
|    3 | Miya  |    7 |
|    4 | Mary  |   16 |
|    5 | Lily  |   16 |
|    6 | Jreey |    8 |
+------+-------+------+
6 rows in set (0.024 sec)

查看目标表 tbl2 的表结构

DESC tbl2;

输出结果如下:

obclient(root@mysql_tenant)[testdb]> DESC tbl2;
+-------+---------+------+------+---------+-------+
| Field | Type    | Null | Key  | Default | Extra |
+-------+---------+------+------+---------+-------+
| col1  | int(11) | YES  |      | NULL    |       |
| col2  | int(11) | YES  |      | NULL    |       |
+-------+---------+------+------+---------+-------+
2 rows in set (0.047 sec)

查看目标表 tbl2 的表数据

SELECT count(*) FROM tbl2;

输出结果如下:

obclient(root@mysql_tenant)[testdb]> SELECT count(*) FROM tbl2;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.012 sec)

结果显示为 0 行。

使用 INSERT INTO 将原表符合条件数据插入到目标表

使用 INSERT INTO 将表 tbl1 中符合条件(age > 10 )的数据插入表 tbl2

INSERT INTO tbl2 SELECT id,age FROM tbl1 WHERE age > 10;

验证目标表 tbl2 的表数据

SELECT * FROM tbl2;

输出结果如下:

obclient(root@mysql_tenant)[testdb]> SELECT * FROM tbl2;
+------+------+
| col1 | col2 |
+------+------+
|    4 |   16 |
|    5 |   16 |
+------+------+
2 rows in set (0.003 sec)

从结果可以看出,表中数据从 tbl1 迁移到了 tbl2

1 个赞

感谢分享

互相学习