---
title: "表与表之间的数据迁移 - OceanBase 数据库 V4.1.0 | OceanBase 文档中心"
description: "表与表之间的数据迁移 本文将主要介绍使用 SQL 语句实现表与表之间的数据迁移。 表与表之间数据迁移 语法 1 INSERT INTO target_table_name[(target_col_name[, target_col_name] ...)] SELECT [(source_col_name[, sour…"
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.1.0

# 表与表之间的数据迁移

更新时间：2023-08-01 11:45:47

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.1.0/zh-CN/500.data-migration/1000.use-sql-statements-migrate-data/100.data-migration-between-tables.md)  

本文将主要介绍使用 SQL 语句实现表与表之间的数据迁移。

## 表与表之间数据迁移

### 语法 1

```sql
INSERT INTO target_table_name[(target_col_name[, target_col_name] ...)]
SELECT [(source_col_name[, source_col_name] ...)]
FROM source_table_name
[WHERE expr];

```

**参数解释：**

| 参数 | 描述 |
| --- | --- |
| target_table_name | 数据迁移的目标表。 |
| target_col_name | 目标表的列名称。如果要更新目标表的全部列数据，可以不填写列名称。 |
| source_col_name | 源表的列名称。选择需要迁移的列，如果要选中全部数据可以用 `*` 表示。   > **注意**   > 选择的列数量需要与目的表中的列数量保持一致。 |
| source_table_name | 数据迁移的源表。 |
| WHERE expr | 迁移数据的筛选条件，不填表示迁移 `SELECT` 选中的所有行记录。 |

### 语法 2

#### 功能适用性

`MERGE` 语句暂时只支持 OceanBase 数据库 Oracle 模式。

```sql
MERGE INTO target_table_name
USING source_table_name
ON (expr)
WHEN NOT MATCHED THEN INSERT VALUES((source_col_name[, source_col_name] ...))
[WHERE expr];

```

**参数解释：**

| 参数 | 描述 |
| --- | --- |
| target_table_name | 数据迁移的目标表。 |
| source_table_name | 数据迁移的源表。 |
| ON (expr) | 源表和目标表的连接条件。 |
| source_col_name | 源表的列名称。选择需要迁移的列，如果要选中全部数据可以用 `*` 表示。   > **注意**   > 选择的列数量需要与目标表中的列数量保持一致，并且迁移的数据要符合目标表的数据类型。 |
| WHERE expr | 迁移数据的筛选条件。 |

### 示例 1

将表 `tbl1` 中符合条件（`age > 10`）的数据插入表 `tbl2` 中。

```shell
obclient [test]> SELECT * FROM tbl1;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    1 | ab   |    8 |
|    2 | bc   |   18 |
|    3 | cd   |   14 |
|    4 | de   |   19 |
|    5 | ef   |    6 |
|    6 | fg   |   15 |
+------+------+------+
6 rows in set

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

obclient [test]> SELECT * FROM tbl2;
Empty set

obclient [test]> INSERT INTO tbl2 SELECT id,age FROM tbl1 WHERE age > 10;
Query OK, 4 rows affected
 Records: 4  Duplicates: 0  Warnings: 0

obclient [test]> SELECT * FROM tbl2;
+------+------+
| col1 | col2 |
+------+------+
|    2 |   18 |
|    3 |   14 |
|    4 |   19 |
|    6 |   15 |
+------+------+
4 rows in set

```

### 示例 2

如果在表 `tbl1` 中找不到与表 `tbl2` 取值相同的行（`tbl1.id=tbl2.col1 and tbl1.age=tbl2.col2`），那么将 `tbl1` 中的这行插入到 `tbl2` 中，且只插入满足 `tbl1.age < 10` 的行。

```shell
obclient [SYS]> SELECT * FROM tbl1;
+------+------+------+
| ID   | NAME | AGE  |
+------+------+------+
|    1 | ab   |    8 |
|    2 | bc   |   18 |
|    3 | cd   |   14 |
|    4 | de   |   19 |
|    5 | ef   |    6 |
|    6 | fg   |   15 |
+------+------+------+
6 rows in set

obclient [SYS]> SELECT * FROM tbl2;
Empty set

obclient [SYS]> MERGE INTO tbl2
    USING tbl1
    ON (tbl1.id=tbl2.col1 and tbl1.age=tbl2.col2)
    WHEN NOT MATCHED THEN INSERT VALUES(tbl1.id,tbl1.age)
    WHERE tbl1.age < 10;
Query OK, 2 rows affected

obclient [SYS]> SELECT * FROM tbl2;
+------+------+
| COL1 | COL2 |
+------+------+
|    1 |    8 |
|    5 |    6 |
+------+------+
2 rows in set

```

## 相关文档

- [INSERT（MySQL 模式）](https://www.oceanbase.com/docs/common-oceanbase-database-cn-0000000001967395)
 - [INSERT（Oracle 模式）](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001701441)
 - [MERGE（Oracle 模式）](https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001701442)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
