---
title: "INSERT - OceanBase 数据库 V4.3.4 | OceanBase 文档中心"
description: "INSERT 描述 该语句用于向表中添加一个或多个记录。 不支持直接对子查询进行插入操作，例如 INSERT INTO (SELECT * FROM t1) VALUES(1, 1) 。 语法 INSERT {into_table_insert | overwrite_table_insert}; into_tabl…"
---
切换语言

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

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

# INSERT

更新时间：2025-01-24 17:02:59

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.4/zh-CN/700.reference/500.sql-reference/100.sql-syntax/200.common-tenant-of-mysql-mode/600.sql-statement-of-mysql-mode/5700.insert-sql-of-mysql-mode.md)  

## 描述

该语句用于向表中添加一个或多个记录。

不支持直接对子查询进行插入操作，例如 `INSERT INTO (SELECT * FROM t1) VALUES(1, 1)`。

## 语法

```sql
INSERT {into_table_insert | overwrite_table_insert};

into_table_insert:
    [/*+ [APPEND | DIRECT(bool, int, [load_mode])] enable_parallel_dml PARALLEL(N) | NO_DIRECT */]
    [IGNORE] [INTO]
    single_table_insert
    [ON DUPLICATE KEY UPDATE update_asgn_list]

load_mode:
    'full'
    | 'inc_replace'

single_table_insert:
    {dml_table_name values_clause
     | dml_table_name '(' ')' values_clause
     | dml_table_name '(' column_list ')' values_clause
     | dml_table_name SET update_asgn_list
     | dml_table_name select_stmt}

dml_table_name:
    table_name [PARTITION (partition_name,...)]

values_clause:
     {{VALUES | VALUE} ({expr | DEFAULT},...) [, ...]
      | select_stmt}

column_list
    column_name [, ...]

update_asgn_list:
     column_name = expr [, ...]

overwrite_table_insert:
    [/*+PARALLEL(N)*/] OVERWRITE table_name [(list_of_columns)] [PARTITION (partition_name, ...)] select_stmt;

```

## 参数解释

| **参数** | **描述** |
| --- | --- |
| APPEND \| DIRECT() | 使用 Hint 启用旁路导入功能，可选项。   #### 注意    在执行旁路导入任务的过程中，不建议同时进行 OceanBase 数据库的升级操作，因为这可能导致旁路导入任务失败。    - `APPEND`：默认等同于使用的 `DIRECT(true, 0)`，同时可以实现在线收集统计信息（GATHER_OPTIMIZER_STATISTICS Hint）的功能。 - `DIRECT()`：      - `bool`：表示写入的数据是否需要排序，`true` 表示需要排序，`false` 表示不需要排序。     - `int`：表示最大容忍的错误行数。     - `load_mode`：可选参数，表示旁路导入的模式。取值须使用英文单引号包起来，取值如下：            - `full`：默认值，表示全量导入。           - `inc`：表示增量导入，支持 `INSERT` 和 `IGNORE` 语义。           - `inc_replace`：表示增量导入，但不检查主键是否重复，相当于 `REPLACE` 语义的增量导入。               #### 注意                当 `load_mode` 取值为 `inc_replace` 时，`INSERT` 语句中不允许有 `IGNORE` 关键字。   更多使用 `INSERT INTO SELECT` 旁路导入的信息，参见 [旁路导入](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001573613)。 |
| enable_parallel_dml parallel(N) | 加载数据的并行度，`N` 默认为 `4`。   #### 说明    一般情况下，`enable_parallel_dml` Hint 和 `parallel` Hint 必须配合使用才能开启并行 DML。不过，当目标表的 Schema 上指定了表级别的并行度时，仅需指定 `enable_parallel_dml` Hint。 |
| NO_DIRECT | 控制单条 SQL 强制不走旁路导入，只要输入的 SQL 带有该 Hint，则整个语句忽略其他旁路导入的 Hint，执行普通导入。 |
| IGNORE | 在 `INSERT` 语句执行过程中发生的错误将会被忽略。 |
| column_list | 用于指定插入数据的列，同时插入多列时以逗号（,）分隔。 |
| table_name | 指定要插入的表名。 |
| partition_name | 插入表指定的分区名，同时插入多个分区时以逗号（,）分隔。 |
| update_asgn_list | 赋值语句，例如 `c1 = 2`。 |
| ON DUPLICATE KEY UPDATE | 指定对重复主键或唯一键的处理。如果指定了 `ON DUPLICATE KEY UPDATE`，当要插入的主键或唯一键有重复时，会用配置值替换待插入的值；如果不指定 `ON DUPLICATE KEY UPDATE`，当要插入的主键或唯一键有重复时，插入报错。 |
| overwrite_table_insert | 用于将查询结果替换表或分区中的现有数据，有关使用 `INSERT OVERWRITE SELECT` 语句的详细信息，参见 [插入数据](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001574077) 中的 **使用 INSERT OVERWRITE SELECT 语句插入数据** 章节。 |
| list_of_columns | 指定表中需要插入数据的列。 |
| select_stmt | 指定 `SELECT` 子句。有关查询语句的详细信息，参见 [SELECT 语句](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001578355)。 |

## 示例

示例表及数据基于以下定义：

```sql
obclient> CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT) PARTITION BY KEY(c1) PARTITIONS 4;
Query OK, 0 rows affected

obclient> CREATE TABLE t2(c1 INT PRIMARY KEY, c2 INT);
Query OK, 0 rows affected
obclient> SELECT * FROM t2;
+----+------+
| c1 | c2   |
+----+------+
|  1 |    1 |
|  2 |    2 |
|  3 |    3 |
|  4 |    4 |
+----+------+
4 rows in set

```

- 向表 `t1` 中插入一行数数据。

  ```javascript
  obclient>  INSERT INTO t1 VALUES(1,1);
  Query OK, 1 row affected

  obclient> SELECT * FROM t1;
  +----+------+
  | c1 | c2   |
  +----+------+
  |  1 |    1 |
  +----+------+
  1 row in set

  ```
 - 向表 `t1` 中插入多行数据。

  ```sql
  obclient> INSERT t1 VALUES(1,1),(2,DEFAULT),(2+2,3*4);
  Query OK, 3 rows affected
  Records: 3  Duplicates: 0  Warnings: 0

  obclient> SELECT * FROM t1;
  +----+------+
  | c1 | c2   |
  +----+------+
  |  1 |    1 |
  |  2 | NULL |
  |  4 |   12 |
  +----+------+
  3 rows in set

  ```
 - 向表 `t1` 指定的 `p0` 分区插入单行数据。

  ```sql
  obclient> INSERT INTO t1 PARTITION(p0) (c1) VALUES(5);
  Query OK, 1 row affected
  obclient> SELECT * FROM t1 PARTITION(p0);
  +----+------+
  | c1 | c2   |
  +----+------+
  |  5 | NULL |
  +----+------+
  1 row in set

  ```
 - 向表 `t1` 中插入重复主键值时利用 `ON DUPLICATE KEY UPDATE` 功能进行值更新。

  ```sql
  obclient> INSERT INTO t1 VALUES(1,1),(1,2) ON DUPLICATE KEY UPDATE c1=100;
  Query OK, 3 rows affected
  Records: 2  Duplicates: 1  Warnings: 0

  obclient> SELECT * FROM t1;
  +-----+------+
  | c1  | c2   |
  +-----+------+
  | 100 |    1 |
  +-----+------+
  1 row in set

  ```
 - 向可更新视图 `v` 的插入值。

  ```sql
  obclient> CREATE VIEW v AS SELECT * FROM t1;
  Query OK, 0 rows affected
  obclient> INSERT INTO v VALUES (1,1);
  Query OK, 1 row affected

  obclient> SELECT * FROM v;
  +----+------+
  | c1 | c2   |
  +----+------+
  |  1 |    1 |
  +----+------+
  1 row in set

  ```
 - 向 `t1` 表中插入 `t2` 的查询结果。

  ```sql
  obclient> INSERT INTO t1 SELECT * FROM t2 WHERE c1>2;
  Query OK, 2 rows affected
  Records: 2  Duplicates: 0  Warnings: 0

  obclient> SELECT * FROM t1;
  +----+------+
  | c1 | c2   |
  +----+------+
  |  3 |    3 |
  |  4 |    4 |
  +----+------+
  2 rows in set

  ```

## 相关文档

- [插入数据](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001574077)
 - [旁路导入](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001573613)
 - [SELECT 语句](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001578355)

 上一篇 下一篇 ![有帮助](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) 咨询热线
