使用 INSERT INTO 实现表中数据迁移(MySQL 模式)
使用 INSERT INTO 和 MERGE INTO 语句实现表与表之间的数据迁移。
需求:将表 tbl1 中符合条件(age > 10 )的数据插入表 tbl2 中。
说明:表 tbl1 、tbl2 已创建。
连接集群
使用 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 。