使用 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
。