---
title: "使用 INSERT INTO SELECT FROM FILES 语句旁路导入数据 - OceanBase 数据库 V4.6.0 | OceanBase 文档中心"
description: 使用 INSERT INTO SELECT FROM FILES 语句旁路导入数据 INSERT INTO SELECT 在满足并行 DML 等前提条件时，可通过 APPEND 、 DIRECT(...) 和 enable_parallel_dml 等 Hint 启用旁路导入；如果未显式指定 Hint，也可以结合配置…
---
切换语言

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

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

# 使用 INSERT INTO SELECT FROM FILES 语句旁路导入数据

更新时间：2026-06-24 21:06:44

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.6.0/zh-CN/620.obap/300.obap-data-transfer/300.data-import/300.insert-into/100.insert-into-select-from-files.md)  

`INSERT INTO SELECT` 在满足并行 DML 等前提条件时，可通过 `APPEND`、`DIRECT(...)` 和 `enable_parallel_dml` 等 Hint 启用旁路导入；如果未显式指定 Hint，也可以结合配置项 [default_load_mode](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005685448) 控制导入行为。

按照写入目标和处理方式的不同，`INSERT INTO SELECT` 的旁路导入可分为**全量旁路导入**和**增量旁路导入**。其中，全量旁路导入适用于首次装载或全量覆盖场景，增量旁路导入适用于已有数据基础上的批量追加场景。下文将分别介绍两种方式的限制、语法和使用示例。

## 全量旁路导入

### 使用限制

- 只支持 PDML（Parallel Data Manipulation Language，并行数据操纵语言），非 PDML 不能用旁路导入。有关并行 DML 的更多信息，参见 [并行 DML](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005685104)。
 - 在导入过程中无法同时执行两个写操作语句（即不能同时写一个表），因为导入过程中会先加表锁，并且整个导入过程中只能进行读操作。
 - 旁路导入属于 DDL 语句，无法在多行事务（包含多个操作的事务）中执行。
     - 不能在 Begin 中执行。
     - Autocommit 必须设置为 1。
 - 不支持在触发器（Trigger）使用。
 - 不支持含有生成列的表（某些索引会产生隐藏生成列，例如 KEY `idx_c2` (`c2`(16)) GLOBAL）。
 - 不支持 Liboblog 和闪回查询（Flashback Query）。

### 使用语法

```sql
INSERT /*+ [APPEND |DIRECT(need_sort,max_error,'full')] enable_parallel_dml parallel(N) */ INTO  table_name [PARTITION(PARTITION_OPTION)] select_sentence

```

更多 `INSERT INTO` 语法的信息，请参见 [INSERT（MySQL 模式）](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005686084) 和 [INSERT（Oracle 模式）](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005687602)。

**参数解释：**

| 参数 | 描述 |
| --- | --- |
| APPEND \| DIRECT() | 使用 Hint 启用旁路导入功能。   - `APPEND` Hint 默认等同于使用的 `DIRECT(true, 0)`，同时可以实现在线收集统计信息（`GATHER_OPTIMIZER_STATISTICS` Hint）的功能。 - `DIRECT()` 参数解释如下：      - `need_sort`：表示写入的数据是否需要排序，值为 `bool` 类型：            - `true`：表示需要排序。           - `false`：表示不需要排序。     - `max_error`：表示最大容忍的错误行数。值为 `INT` 类型，超过这个数值导入任务执行会失败。     - `full`：表示全量旁路导入，可选项，取值须使用英文单引号包起来。 |
| enable_parallel_dml | 加载数据的并行度。   #### 说明    一般情况下，`enable_parallel_dml` Hint 和 `parallel` Hint 必须配合使用才能开启并行 DML。不过，当目标表的 Schema 上指定了表级别的并行度时，仅需指定 `enable_parallel_dml` Hint。 |
| parallel(N) | 加载数据的并行度，必填项，取值是大于 1 的整数。 |
| table_name | 导入数据的表的名称，支持指定表任意列数目。 |
| PARTITION_OPTION | 指定分区旁路导入时的分区名：   - partition_option_list：一级分区列表，同时插入多个分区时以逗号（,）分隔。 - subpartition_option_list：二级分区列表，同时插入多个分区时以逗号（,）分隔。 |

### 使用示例

    MySQL 模式   Oracle 模式

**示例 1：使用 INSERT INTO SELECT 全量旁路导入的完整示例。**

使用旁路导入将表 `tbl2` 中的部分数据导入到 `tbl1` 中。

1. 查询表 `tbl1` 是否有数据，此时显示表为空。

   ```shell
   obclient [test]> SELECT * FROM tbl1;
   Empty set

   ```
 2. 查询表 `tbl2` 是否有数据。

   ```shell
   obclient [test]> SELECT * FROM tbl2;

   ```

   查询到表 `tbl2` 有数据。

   ```shell
   +------+------+------+
   | col1 | col2 | col3 |
   +------+------+------+
   |    1 | a1   |   11 |
   |    2 | a2   |   22 |
   |    3 | a3   |   33 |
   +------+------+------+
   3 rows in set

   ```
 3. 使用旁路导入将表 `tbl2` 中的数据导入到表 `tbl1`。

      - 指定 `INSERT INTO SELECT` 语句的 Hint。

            - 不指定分区导入。

             ```shell
             obclient [test]> INSERT /*+ DIRECT(true, 0, 'full') enable_parallel_dml parallel(16) */ INTO tbl1 SELECT t2.col1,t2.col3 FROM tbl2 t2;
             Query OK, 3 rows affected
             Records: 3  Duplicates: 0  Warnings: 0

             ```
            - （可选）指定分区导入。

             ```shell
             obclient [test]> INSERT /*+ DIRECT(true, 0, 'full') enable_parallel_dml parallel(16) */ INTO tbl1 partition(p0, p1) SELECT t2.col1,1 FROM tbl2 partition(p0, p1) t2;
             Query OK, 3 rows affected
             Records: 3  Duplicates: 0  Warnings: 0

             ```

             ```shell
             obclient [test]> INSERT /*+ DIRECT(true, 0, 'full') enable_parallel_dml parallel(16) */ INTO tbl1 partition(p0, p1) SELECT t2.col1,1 FROM tbl2 partition(p0sp0_1, p1sp1_1) t2;
             Query OK, 3 rows affected
             Records: 3  Duplicates: 0  Warnings: 0

             ```
      - 不指定 `INSERT INTO SELECT` 语句的 Hint。

       设置配置项 `default_load_mode` 的值为 `FULL_DIRECT_WRITE`。

       ```shell
       obclient [test]> ALTER SYSTEM SET default_load_mode ='FULL_DIRECT_WRITE';

       ```

       ```shell
       obclient [test]> INSERT INTO tbl1 SELECT t2.col1,t2.col3 FROM tbl1 t2;

       ```
 4. 验证表 `tbl1` 中是否已导入数据。

   ```shell
   obclient [test]> SELECT * FROM tbl1;

   ```

   查询结果如下：

   ```shell
   +------+------+
   | col1 | col2 |
   +------+------+
   |    1 |   11 |
   |    2 |   22 |
   |    3 |   33 |
   +------+------+
   3 rows in set

   ```

   结果显示表 `tbl1` 中已导入数据。
 5. (可选)在 `EXPLAIN EXTENDED` 语句的返回结果的 `Note` 中，查看是否通过旁路导入写入的数据。

   ```shell
   obclient [test]> EXPLAIN EXTENDED INSERT /*+ direct(true, 0, 'full') enable_parallel_dml parallel(16) */ INTO tbl1 SELECT t2.col1,t2.col3 FROM tbl2 t2;

   ```

   返回结果如下：

   ```shell
   +--------------------------------------------------------------------------------------------------------------------------------------------------------------+
   | Query Plan                                                                                                                                                   |
   +--------------------------------------------------------------------------------------------------------------------------------------------------------------+
   | ==============================================================================                                                                               |
   | |ID|OPERATOR                           |NAME           |EST.ROWS|EST.TIME(us)|                                                                               |
   | ------------------------------------------------------------------------------                                                                               |
   | |0 |PX COORDINATOR                     |               |3       |27          |                                                                               |
   | |1 |└─EXCHANGE OUT DISTR               |:EX10001       |3       |27          |                                                                               |
   | |2 |  └─INSERT                         |               |3       |26          |                                                                               |
   | |3 |    └─EXCHANGE IN DISTR            |               |3       |1           |                                                                               |
   | |4 |      └─EXCHANGE OUT DISTR (RANDOM)|:EX10000       |3       |1           |                                                                               |
   | |5 |        └─SUBPLAN SCAN             |ANONYMOUS_VIEW1|3       |1           |                                                                               |
   | |6 |          └─PX BLOCK ITERATOR      |               |3       |1           |                                                                               |
   | |7 |            └─TABLE FULL SCAN      |t2             |3       |1           |                                                                               |
   | ==============================================================================                                                                               |
   | Outputs & filters:                                                                                                                                           |
   | -------------------------------------                                                                                                                        |
   |   0 - output(nil), filter(nil), rowset=16                                                                                                                    |
   |   1 - output(nil), filter(nil), rowset=16                                                                                                                    |
   |       dop=16                                                                                                                                                 |
   |   2 - output(nil), filter(nil)                                                                                                                               |
   |       columns([{tbl1: ({tbl1: (tbl1.__pk_increment(0x7efa63627790), tbl1.col1(0x7efa63611980), tbl1.col3(0x7efa63611dc0))})}]), partitions(p0),              |
   |       column_values([T_HIDDEN_PK(0x7efa63627bd0)], [column_conv(INT,PS:(11,0),NULL,ANONYMOUS_VIEW1.col1(0x7efa63626f10))(0x7efa63627ff0)], [column_conv(INT, |
   |       PS:(11,0),NULL,ANONYMOUS_VIEW1.col3(0x7efa63627350))(0x7efa6362ff20)])                                                                                 |
   |   3 - output([T_HIDDEN_PK(0x7efa63627bd0)], [ANONYMOUS_VIEW1.col1(0x7efa63626f10)], [ANONYMOUS_VIEW1.col3(0x7efa63627350)]), filter(nil), rowset=16          |
   |   4 - output([T_HIDDEN_PK(0x7efa63627bd0)], [ANONYMOUS_VIEW1.col1(0x7efa63626f10)], [ANONYMOUS_VIEW1.col3(0x7efa63627350)]), filter(nil), rowset=16          |
   |       dop=16                                                                                                                                                 |
   |   5 - output([ANONYMOUS_VIEW1.col1(0x7efa63626f10)], [ANONYMOUS_VIEW1.col3(0x7efa63627350)]), filter(nil), rowset=16                                         |
   |       access([ANONYMOUS_VIEW1.col1(0x7efa63626f10)], [ANONYMOUS_VIEW1.col3(0x7efa63627350)])                                                                 |
   |   6 - output([t2.col1(0x7efa63625ed0)], [t2.col3(0x7efa63626780)]), filter(nil), rowset=16                                                                   |
   |   7 - output([t2.col1(0x7efa63625ed0)], [t2.col3(0x7efa63626780)]), filter(nil), rowset=16                                                                   |
   |       access([t2.col1(0x7efa63625ed0)], [t2.col3(0x7efa63626780)]), partitions(p0)                                                                           |
   |       is_index_back=false, is_global_index=false,                                                                                                            |
   |       range_key([t2.__pk_increment(0x7efa63656410)]), range(MIN ; MAX)always true                                                                            |
   | Used Hint:                                                                                                                                                   |
   | -------------------------------------                                                                                                                        |
   |   /*+                                                                                                                                                        |
   |                                                                                                                                                              |
   |       USE_PLAN_CACHE( NONE )                                                                                                                                 |
   |       PARALLEL(16)                                                                                                                                           |
   |       ENABLE_PARALLEL_DML                                                                                                                                    |
   |       DIRECT(TRUE, 0, 'FULL')                                                                                                                                |
   |   */                                                                                                                                                         |
   | Qb name trace:                                                                                                                                               |
   | -------------------------------------                                                                                                                        |
   |   stmt_id:0, stmt_type:T_EXPLAIN                                                                                                                             |
   |   stmt_id:1, INS$1                                                                                                                                           |
   |   stmt_id:2, SEL$1                                                                                                                                           |
   | Outline Data:                                                                                                                                                |
   | -------------------------------------                                                                                                                        |
   |   /*+                                                                                                                                                        |
   |       BEGIN_OUTLINE_DATA                                                                                                                                     |
   |       PARALLEL(@"SEL$1" "t2"@"SEL$1" 16)                                                                                                                     |
   |       FULL(@"SEL$1" "t2"@"SEL$1")                                                                                                                            |
   |       USE_PLAN_CACHE( NONE )                                                                                                                                 |
   |       PARALLEL(16)                                                                                                                                           |
   |       ENABLE_PARALLEL_DML                                                                                                                                    |
   |       OPTIMIZER_FEATURES_ENABLE('4.3.3.0')                                                                                                                   |
   |       DIRECT(TRUE, 0, 'FULL')                                                                                                                                |
   |       END_OUTLINE_DATA                                                                                                                                       |
   |   */                                                                                                                                                         |
   | Optimization Info:                                                                                                                                           |
   | -------------------------------------                                                                                                                        |
   |   t2:                                                                                                                                                        |
   |       table_rows:3                                                                                                                                           |
   |       physical_range_rows:3                                                                                                                                  |
   |       logical_range_rows:3                                                                                                                                   |
   |       index_back_rows:0                                                                                                                                      |
   |       output_rows:3                                                                                                                                          |
   |       table_dop:16                                                                                                                                           |
   |       dop_method:Global DOP                                                                                                                                  |
   |       avaiable_index_name:[tbl2]                                                                                                                             |
   |       stats info:[version=0, is_locked=0, is_expired=0]                                                                                                      |
   |       dynamic sampling level:0                                                                                                                               |
   |       estimation method:[DEFAULT, STORAGE]                                                                                                                   |
   |   Plan Type:                                                                                                                                                 |
   |       DISTRIBUTED                                                                                                                                            |
   |   Note:                                                                                                                                                      |
   |       Degree of Parallelism is 16 because of hint                                                                                                            |
   |       Direct-mode is enabled in insert into select                                                                                                           |
   +--------------------------------------------------------------------------------------------------------------------------------------------------------------+
   77 rows in set (0.009 sec)

   ```

**示例 2：对于 Range-Hash 二级分区表，指定一级分区旁路导入数据。**

目标表为二级分区，一级为 Range 分区，二级为 Hash 分区，指定一级分区全量旁路导入。

1. 创建包含两个分区的表 `tbl1`，一级为 Range 分区，二级为 Hash 分区。

   ```shell
   obclient [test]> CREATE TABLE tbl1(col1 INT,col2 INT)
                     PARTITION BY RANGE COLUMNS(col1)
                        SUBPARTITION BY HASH(col2) SUBPARTITIONS 3 (
                           PARTITION p0 VALUES LESS THAN(10),
                           PARTITION p1 VALUES LESS THAN(20));

   ```
 2. 使用旁路导入将表 `tbl2` 中的数据导入到表 `tbl1` 的 `p0`、`p1` 分区中。

   ```shell
   obclient [test]> insert /*+ direct(true, 0, 'full') enable_parallel_dml parallel(3) append */ into tbl1 partition(p0,p1) select * from tbl2 where col1 <20;

   ```

使用旁路导入将表 `tbl4` 中的部分数据导入到 `tbl3` 中。

1. 查询表 `tbl3` 是否有数据，此时显示表为空。

   ```shell
   obclient [test]> SELECT * FROM tbl3;
   Empty set

   ```
 2. 查询表 `tbl4` 是否有数据。

   ```shell
   obclient [test]> SELECT * FROM tbl4;

   ```

   查询到表 `tbl4` 有数据。

   ```shell
   +------+------+------+
   | COL1 | COL2 | COL3 |
   +------+------+------+
   |    1 | a1   |   11 |
   |    2 | a2   |   22 |
   |    3 | a3   |   33 |
   +------+------+------+
   3 rows in set (0.000 sec)

   ```
 3. 使用旁路导入将表 `tbl4` 中的数据导入到表 `tbl3`。

             ```shell
             obclient [test]> INSERT /*+ direct(true, 0, 'full') enable_parallel_dml parallel(16) */ INTO tbl3 SELECT t2.col1, t2.col3 FROM tbl4 t2 WHERE ROWNUM <= 10000;
             Query OK, 3 rows affected
             Records: 3  Duplicates: 0  Warnings: 0

             ```shell
             obclient [test]> INSERT /*+ DIRECT(true, 0, 'full') enable_parallel_dml parallel(16) */ INTO tbl3 partition(p0, p1) SELECT t2.col1,1 FROM tbl4 partition(p0, p1) t2;
             Query OK, 3 rows affected
             Records: 3  Duplicates: 0  Warnings: 0

             ```

             ```shell
             obclient [test]> INSERT /*+ DIRECT(true, 0, 'full') enable_parallel_dml parallel(16) */ INTO tbl3 partition(p0, p1) SELECT t2.col1,1 FROM tbl4 partition(p0sp0_1, p1sp1_1) t2;
             Query OK, 3 rows affected
             Records: 3  Duplicates: 0  Warnings: 0

       ```

       ```shell
       obclient [test]> INSERT INTO tbl3 SELECT t2.col1, t2.col3 FROM tbl4 t2 WHERE ROWNUM <= 10000;

       ```
 4. 验证表 `tbl3` 中是否已导入数据。

   ```shell
   obclient [test]> SELECT * FROM tbl3;

   ```

   查询结果如下：

   ```shell
   +------+------+
   | col1 | col3 |
   +------+------+
   |    1 |   11 |
   |    2 |   22 |
   |    3 |   33 |
   +------+------+
   3 rows in set

   ```

   结果显示表 `tbl3` 中已导入数据。
 5. (可选)在 `EXPLAIN EXTENDED` 语句的返回结果的 `Note` 中，查看是否通过旁路导入写入的数据。

   ```shell
   obclient [test]> EXPLAIN EXTENDED INSERT /*+ direct(true, 0, 'full') enable_parallel_dml parallel(16) */ INTO tbl3 SELECT t2.col1,t2.col3 FROM tbl4 t2;

   ```

   返回结果如下：

   ```shell
   +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
   | Query Plan                                                                                                                                                                                                                 |
   +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
   | ===================================================================================                                                                                                                                        |
   | |ID|OPERATOR                                |NAME           |EST.ROWS|EST.TIME(us)|                                                                                                                                        |
   | -----------------------------------------------------------------------------------                                                                                                                                        |
   | |0 |OPTIMIZER STATS MERGE                   |               |3       |29          |                                                                                                                                        |
   | |1 |└─PX COORDINATOR                        |               |3       |29          |                                                                                                                                        |
   | |2 |  └─EXCHANGE OUT DISTR                  |:EX10001       |3       |27          |                                                                                                                                        |
   | |3 |    └─INSERT                            |               |3       |27          |                                                                                                                                        |
   | |4 |      └─OPTIMIZER STATS GATHER          |               |3       |1           |                                                                                                                                        |
   | |5 |        └─EXCHANGE IN DISTR             |               |3       |1           |                                                                                                                                        |
   | |6 |          └─EXCHANGE OUT DISTR (RANDOM) |:EX10000       |3       |1           |                                                                                                                                        |
   | |7 |            └─SUBPLAN SCAN              |ANONYMOUS_VIEW1|3       |1           |                                                                                                                                        |
   | |8 |              └─PX BLOCK ITERATOR       |               |3       |1           |                                                                                                                                        |
   | |9 |                └─COLUMN TABLE FULL SCAN|T2             |3       |1           |                                                                                                                                        |
   | ===================================================================================                                                                                                                                        |
   | Outputs & filters:                                                                                                                                                                                                         |
   | -------------------------------------                                                                                                                                                                                      |
   |   0 - output(nil), filter(nil), rowset=16                                                                                                                                                                                  |
   |   1 - output([column_conv(NUMBER,PS:(-1,0),NULL,ANONYMOUS_VIEW1.COL1(0x7ef8f6027720))(0x7ef8f60287f0)], [column_conv(NUMBER,PS:(-1,0),NULL,ANONYMOUS_VIEW1.COL3(0x7ef8f6027b60))(0x7ef8f6030710)]), filter(nil), rowset=16 |
   |   2 - output([column_conv(NUMBER,PS:(-1,0),NULL,ANONYMOUS_VIEW1.COL1(0x7ef8f6027720))(0x7ef8f60287f0)], [column_conv(NUMBER,PS:(-1,0),NULL,ANONYMOUS_VIEW1.COL3(0x7ef8f6027b60))(0x7ef8f6030710)]), filter(nil), rowset=16 |
   |       dop=16                                                                                                                                                                                                               |
   |   3 - output([column_conv(NUMBER,PS:(-1,0),NULL,ANONYMOUS_VIEW1.COL1(0x7ef8f6027720))(0x7ef8f60287f0)], [column_conv(NUMBER,PS:(-1,0),NULL,ANONYMOUS_VIEW1.COL3(0x7ef8f6027b60))(0x7ef8f6030710)]), filter(nil)            |
   |       columns([{TBL3: ({TBL3: (TBL3.__pk_increment(0x7ef8f6027fa0), TBL3.COL1(0x7ef8f6011d50), TBL3.COL3(0x7ef8f6012190))})}]), partitions(p0),                                                                            |
   |       column_values([T_HIDDEN_PK(0x7ef8f60283e0)], [column_conv(NUMBER,PS:(-1,0),NULL,ANONYMOUS_VIEW1.COL1(0x7ef8f6027720))(0x7ef8f60287f0)], [column_conv(NUMBER,                                                         |
   |       PS:(-1,0),NULL,ANONYMOUS_VIEW1.COL3(0x7ef8f6027b60))(0x7ef8f6030710)])                                                                                                                                               |
   |   4 - output([column_conv(NUMBER,PS:(-1,0),NULL,ANONYMOUS_VIEW1.COL1(0x7ef8f6027720))(0x7ef8f60287f0)], [column_conv(NUMBER,PS:(-1,0),NULL,ANONYMOUS_VIEW1.COL3(0x7ef8f6027b60))(0x7ef8f6030710)],                         |
   |        [T_HIDDEN_PK(0x7ef8f60283e0)]), filter(nil), rowset=16                                                                                                                                                              |
   |   5 - output([T_HIDDEN_PK(0x7ef8f60283e0)], [ANONYMOUS_VIEW1.COL1(0x7ef8f6027720)], [ANONYMOUS_VIEW1.COL3(0x7ef8f6027b60)]), filter(nil), rowset=16                                                                        |
   |   6 - output([T_HIDDEN_PK(0x7ef8f60283e0)], [ANONYMOUS_VIEW1.COL1(0x7ef8f6027720)], [ANONYMOUS_VIEW1.COL3(0x7ef8f6027b60)]), filter(nil), rowset=16                                                                        |
   |       dop=16                                                                                                                                                                                                               |
   |   7 - output([ANONYMOUS_VIEW1.COL1(0x7ef8f6027720)], [ANONYMOUS_VIEW1.COL3(0x7ef8f6027b60)]), filter(nil), rowset=16                                                                                                       |
   |       access([ANONYMOUS_VIEW1.COL1(0x7ef8f6027720)], [ANONYMOUS_VIEW1.COL3(0x7ef8f6027b60)])                                                                                                                               |
   |   8 - output([T2.COL1(0x7ef8f60264c0)], [T2.COL3(0x7ef8f6026f90)]), filter(nil), rowset=16                                                                                                                                 |
   |   9 - output([T2.COL1(0x7ef8f60264c0)], [T2.COL3(0x7ef8f6026f90)]), filter(nil), rowset=16                                                                                                                                 |
   |       access([T2.COL1(0x7ef8f60264c0)], [T2.COL3(0x7ef8f6026f90)]), partitions(p0)                                                                                                                                         |
   |       is_index_back=false, is_global_index=false,                                                                                                                                                                          |
   |       range_key([T2.__pk_increment(0x7ef8f60584a0)]), range(MIN ; MAX)always true                                                                                                                                          |
   | Used Hint:                                                                                                                                                                                                                 |
   | -------------------------------------                                                                                                                                                                                      |
   |   /*+                                                                                                                                                                                                                      |
   |                                                                                                                                                                                                                            |
   |       USE_PLAN_CACHE( NONE )                                                                                                                                                                                               |
   |       PARALLEL(16)                                                                                                                                                                                                         |
   |       ENABLE_PARALLEL_DML                                                                                                                                                                                                  |
   |       DIRECT(TRUE, 0, 'FULL')                                                                                                                                                                                              |
   |   */                                                                                                                                                                                                                       |
   | Qb name trace:                                                                                                                                                                                                             |
   | -------------------------------------                                                                                                                                                                                      |
   |   stmt_id:0, stmt_type:T_EXPLAIN                                                                                                                                                                                           |
   |   stmt_id:1, INS$1                                                                                                                                                                                                         |
   |   stmt_id:2, SEL$1                                                                                                                                                                                                         |
   | Outline Data:                                                                                                                                                                                                              |
   | -------------------------------------                                                                                                                                                                                      |
   |   /*+                                                                                                                                                                                                                      |
   |       BEGIN_OUTLINE_DATA                                                                                                                                                                                                   |
   |       PARALLEL(@"SEL$1" "T2"@"SEL$1" 16)                                                                                                                                                                                   |
   |       FULL(@"SEL$1" "T2"@"SEL$1")                                                                                                                                                                                          |
   |       USE_COLUMN_TABLE(@"SEL$1" "T2"@"SEL$1")                                                                                                                                                                              |
   |       USE_PLAN_CACHE( NONE )                                                                                                                                                                                               |
   |       PARALLEL(16)                                                                                                                                                                                                         |
   |       ENABLE_PARALLEL_DML                                                                                                                                                                                                  |
   |       OPTIMIZER_FEATURES_ENABLE('4.3.3.0')                                                                                                                                                                                 |
   |       DIRECT(TRUE, 0, 'FULL')                                                                                                                                                                                              |
   |       END_OUTLINE_DATA                                                                                                                                                                                                     |
   |   */                                                                                                                                                                                                                       |
   | Optimization Info:                                                                                                                                                                                                         |
   | -------------------------------------                                                                                                                                                                                      |
   |   T2:                                                                                                                                                                                                                      |
   |       table_rows:3                                                                                                                                                                                                         |
   |       physical_range_rows:3                                                                                                                                                                                                |
   |       logical_range_rows:3                                                                                                                                                                                                 |
   |       index_back_rows:0                                                                                                                                                                                                    |
   |       output_rows:3                                                                                                                                                                                                        |
   |       table_dop:16                                                                                                                                                                                                         |
   |       dop_method:Global DOP                                                                                                                                                                                                |
   |       avaiable_index_name:[TBL4]                                                                                                                                                                                           |
   |       stats info:[version=0, is_locked=0, is_expired=0]                                                                                                                                                                    |
   |       dynamic sampling level:0                                                                                                                                                                                             |
   |       estimation method:[DEFAULT, STORAGE]                                                                                                                                                                                 |
   |   Plan Type:                                                                                                                                                                                                               |
   |       DISTRIBUTED                                                                                                                                                                                                          |
   |   Note:                                                                                                                                                                                                                    |
   |       Degree of Parallelism is 16 because of hint                                                                                                                                                                          |
   +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
   82 rows in set (0.006 sec)

   ```

   ```shell
   obclient [test]> CREATE TABLE tbl1_1 (
                        col1 INT,
                        col2 INT
                     )
                     PARTITION BY RANGE (col1)
                     SUBPARTITION BY HASH (col2)
                     SUBPARTITION TEMPLATE (
                        SUBPARTITION sp1,
                        SUBPARTITION sp2,
                        SUBPARTITION sp3
                     )
                     (
                        PARTITION p0 VALUES LESS THAN (10),
                        PARTITION p1 VALUES LESS THAN (20)  
                     );

   ```

## 增量旁路导入

### 使用限制

- 只支持 PDML（Parallel Data Manipulation Language，并行数据操纵语言），非 PDML 不能用旁路导入。有关并行 DML 的更多信息，参见 [并行 DML](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005685104)。
 - 在导入过程中无法同时执行两个写操作语句（即不能同时写一个表），因为导入过程中会先加表锁，并且整个导入过程中只能进行读操作。
 - 不支持在触发器（Trigger）使用。
 - 不支持含有生成列的表（某些索引会产生隐藏生成列，例如 KEY `idx_c2` (`c2`(16)) GLOBAL）。
 - 不支持 Liboblog 和闪回查询（Flashback Query）。
 - 有索引（不包括主键）的表不支持增量旁路导入。
 - 有外键的表不支持增量旁路导入。
 - 有 `GLOBAL` 索引的表不支持增量旁路导入。
 - 有约束的表不支持增量旁路导入。
 - 多于一个 `LOCAL` 唯一索引的无主键表不支持增量旁路导入。
 - 有唯一索引的有主键表不支持增量旁路导入。

### 使用语法

```sql
INSERT /*+ [DIRECT(need_sort,max_error,{'inc'|'inc_replace'})] enable_parallel_dml parallel(N) */ INTO  table_name [PARTITION(PARTITION_OPTION)] select_sentence

```

**参数解释：**

| 参数 | 描述 |
| --- | --- |
| DIRECT() | 使用 Hint 启用旁路导入功能。`DIRECT()` 参数解释如下：   - `need_sort`：表示写入的数据是否需要排序，值为 `bool` 类型：      - `true`：表示需要排序。     - `false`：表示不需要排序。 - `max_error`：表示最大容忍的错误行数。值为 `INT` 类型，超过这个数值导入任务执行会失败。 - `inc\|inc_replace`：表示增量旁路导入的两种模式，取值须使用英文单引号包起来。      - `inc`：表示增量导入，检查主键是否重复，支持 `INSERT` 和 `IGNORE` 语义。     - `inc_replace`：表示增量导入，但不检查主键是否重复，相当于 `REPLACE` 语义的增量导入。 |
| enable_parallel_dml | 加载数据的并行度。   #### 说明    一般情况下，`enable_parallel_dml` Hint 和 `parallel` Hint 必须配合使用才能开启并行 DML。不过，当目标表的 Schema 上指定了表级别的并行度时，仅需指定 `enable_parallel_dml` Hint。 |
| parallel(N) | 加载数据的并行度，必填项，取值是大于 1 的整数。 |
| table_name | 导入数据的表的名称，支持指定表任意列数目。 |
| PARTITION_OPTION | 指定分区旁路导入时的分区名：   - partition_option_list：一级分区列表，同时插入多个分区时以逗号（,）分隔。 - subpartition_option_list：二级分区列表，同时插入多个分区时以逗号（,）分隔。 |

### 使用示例

`INSERT INTO SELECT` 语句中增量旁路导入的操作步骤与全量旁路导入的步骤一样，只需要将 `full` 字段的取值替换为 `inc` 或 `inc_replace` 即可。

**示例 1：使用 INSERT INTO SELECT 增量旁路导入的完整示例。**

   ```

             ```shell
             obclient [test]> INSERT /*+ DIRECT(true, 0, 'inc_replace') enable_parallel_dml parallel(16) */ INTO tbl1 SELECT t2.col1,t2.col3 FROM tbl2 t2;
             Query OK, 3 rows affected
             Records: 3  Duplicates: 0  Warnings: 0

             ```shell
             obclient [test]> INSERT /*+ DIRECT(true, 0, 'inc_replace') enable_parallel_dml parallel(16) */ INTO tbl1 partition(p0, p1) SELECT t2.col1,1 FROM tbl2 partition(p0, p1) t2;
             Query OK, 3 rows affected
             Records: 3  Duplicates: 0  Warnings: 0

             ```

             ```shell
             obclient [test]> INSERT /*+ DIRECT(true, 0, 'inc_replace') enable_parallel_dml parallel(16) */ INTO tbl1 partition(p0, p1) SELECT t2.col1,1 FROM tbl2 partition(p0sp0_1, p1sp1_1) t2;
             Query OK, 3 rows affected
             Records: 3  Duplicates: 0  Warnings: 0

       设置配置项 `default_load_mode` 的值为 `INC_DIRECT_WRITE` 或 `INC_REPLACE_DIRECT_WRITE`。

       ```shell
       obclient [test]> ALTER SYSTEM SET default_load_mode ='INC_DIRECT_WRITE';

       ```

   ```

   查询结果如下：

   ```

   ```shell
   obclient [test]> EXPLAIN EXTENDED INSERT /*+ direct(true, 0, 'inc_replace') enable_parallel_dml parallel(16) */ INTO tbl1 SELECT t2.col1,t2.col3 FROM tbl2 t2;

   ```

   返回结果如下：

   ```shell
   +--------------------------------------------------------------------------------------------------------------------------------------------------------------+
   | Query Plan                                                                                                                                                   |
   +--------------------------------------------------------------------------------------------------------------------------------------------------------------+
   | ==============================================================================                                                                               |
   | |ID|OPERATOR                           |NAME           |EST.ROWS|EST.TIME(us)|                                                                               |
   | ------------------------------------------------------------------------------                                                                               |
   | |0 |PX COORDINATOR                     |               |3       |27          |                                                                               |
   | |1 |└─EXCHANGE OUT DISTR               |:EX10001       |3       |27          |                                                                               |
   | |2 |  └─INSERT                         |               |3       |26          |                                                                               |
   | |3 |    └─EXCHANGE IN DISTR            |               |3       |1           |                                                                               |
   | |4 |      └─EXCHANGE OUT DISTR (RANDOM)|:EX10000       |3       |1           |                                                                               |
   | |5 |        └─SUBPLAN SCAN             |ANONYMOUS_VIEW1|3       |1           |                                                                               |
   | |6 |          └─PX BLOCK ITERATOR      |               |3       |1           |                                                                               |
   | |7 |            └─TABLE FULL SCAN      |t2             |3       |1           |                                                                               |
   | ==============================================================================                                                                               |
   | Outputs & filters:                                                                                                                                           |
   | -------------------------------------                                                                                                                        |
   |   0 - output(nil), filter(nil), rowset=16                                                                                                                    |
   |   1 - output(nil), filter(nil), rowset=16                                                                                                                    |
   |       dop=16                                                                                                                                                 |
   |   2 - output(nil), filter(nil)                                                                                                                               |
   |       columns([{tbl1: ({tbl1: (tbl1.__pk_increment(0x7efa518277d0), tbl1.col1(0x7efa518119c0), tbl1.col3(0x7efa51811e00))})}]), partitions(p0),              |
   |       column_values([T_HIDDEN_PK(0x7efa51827c10)], [column_conv(INT,PS:(11,0),NULL,ANONYMOUS_VIEW1.col1(0x7efa51826f50))(0x7efa51828030)], [column_conv(INT, |
   |       PS:(11,0),NULL,ANONYMOUS_VIEW1.col3(0x7efa51827390))(0x7efa5182ff60)])                                                                                 |
   |   3 - output([T_HIDDEN_PK(0x7efa51827c10)], [ANONYMOUS_VIEW1.col1(0x7efa51826f50)], [ANONYMOUS_VIEW1.col3(0x7efa51827390)]), filter(nil), rowset=16          |
   |   4 - output([T_HIDDEN_PK(0x7efa51827c10)], [ANONYMOUS_VIEW1.col1(0x7efa51826f50)], [ANONYMOUS_VIEW1.col3(0x7efa51827390)]), filter(nil), rowset=16          |
   |       dop=16                                                                                                                                                 |
   |   5 - output([ANONYMOUS_VIEW1.col1(0x7efa51826f50)], [ANONYMOUS_VIEW1.col3(0x7efa51827390)]), filter(nil), rowset=16                                         |
   |       access([ANONYMOUS_VIEW1.col1(0x7efa51826f50)], [ANONYMOUS_VIEW1.col3(0x7efa51827390)])                                                                 |
   |   6 - output([t2.col1(0x7efa51825f10)], [t2.col3(0x7efa518267c0)]), filter(nil), rowset=16                                                                   |
   |   7 - output([t2.col1(0x7efa51825f10)], [t2.col3(0x7efa518267c0)]), filter(nil), rowset=16                                                                   |
   |       access([t2.col1(0x7efa51825f10)], [t2.col3(0x7efa518267c0)]), partitions(p0)                                                                           |
   |       is_index_back=false, is_global_index=false,                                                                                                            |
   |       range_key([t2.__pk_increment(0x7efa51856410)]), range(MIN ; MAX)always true                                                                            |
   | Used Hint:                                                                                                                                                   |
   | -------------------------------------                                                                                                                        |
   |   /*+                                                                                                                                                        |
   |                                                                                                                                                              |
   |       USE_PLAN_CACHE( NONE )                                                                                                                                 |
   |       PARALLEL(16)                                                                                                                                           |
   |       ENABLE_PARALLEL_DML                                                                                                                                    |
   |       DIRECT(TRUE, 0, 'INC_REPLACE')                                                                                                                         |
   |   */                                                                                                                                                         |
   | Qb name trace:                                                                                                                                               |
   | -------------------------------------                                                                                                                        |
   |   stmt_id:0, stmt_type:T_EXPLAIN                                                                                                                             |
   |   stmt_id:1, INS$1                                                                                                                                           |
   |   stmt_id:2, SEL$1                                                                                                                                           |
   | Outline Data:                                                                                                                                                |
   | -------------------------------------                                                                                                                        |
   |   /*+                                                                                                                                                        |
   |       BEGIN_OUTLINE_DATA                                                                                                                                     |
   |       PARALLEL(@"SEL$1" "t2"@"SEL$1" 16)                                                                                                                     |
   |       FULL(@"SEL$1" "t2"@"SEL$1")                                                                                                                            |
   |       USE_PLAN_CACHE( NONE )                                                                                                                                 |
   |       PARALLEL(16)                                                                                                                                           |
   |       ENABLE_PARALLEL_DML                                                                                                                                    |
   |       OPTIMIZER_FEATURES_ENABLE('4.3.3.0')                                                                                                                   |
   |       DIRECT(TRUE, 0, 'INC_REPLACE')                                                                                                                         |
   |       END_OUTLINE_DATA                                                                                                                                       |
   |   */                                                                                                                                                         |
   | Optimization Info:                                                                                                                                           |
   | -------------------------------------                                                                                                                        |
   |   t2:                                                                                                                                                        |
   |       table_rows:3                                                                                                                                           |
   |       physical_range_rows:3                                                                                                                                  |
   |       logical_range_rows:3                                                                                                                                   |
   |       index_back_rows:0                                                                                                                                      |
   |       output_rows:3                                                                                                                                          |
   |       table_dop:16                                                                                                                                           |
   |       dop_method:Global DOP                                                                                                                                  |
   |       avaiable_index_name:[tbl2]                                                                                                                             |
   |       stats info:[version=0, is_locked=0, is_expired=0]                                                                                                      |
   |       dynamic sampling level:0                                                                                                                               |
   |       estimation method:[DEFAULT, STORAGE]                                                                                                                   |
   |   Plan Type:                                                                                                                                                 |
   |       DISTRIBUTED                                                                                                                                            |
   |   Note:                                                                                                                                                      |
   |       Degree of Parallelism is 16 because of hint                                                                                                            |
   |       Direct-mode is enabled in insert into select                                                                                                           |
   +--------------------------------------------------------------------------------------------------------------------------------------------------------------+
   77 rows in set (0.009 sec)

   ```

目标表为二级分区，一级为 Range 分区，二级为 Hash 分区，指定一级分区增量旁路导入。

   ```shell
   obclient [test]> insert /*+ direct(true, 0, 'inc_replace') enable_parallel_dml parallel(3) append */ into tbl1 partition(p0,p1) select * from tbl2 where col1 <20;

   ```

   ```

             ```shell
             obclient [test]> INSERT /*+ direct(true, 0, 'inc_replace') enable_parallel_dml parallel(16) */ INTO tbl3 SELECT t2.col1, t2.col3 FROM tbl4 t2 WHERE ROWNUM <= 10000;
             Query OK, 3 rows affected
             Records: 3  Duplicates: 0  Warnings: 0

             ```shell
             obclient [test]> INSERT /*+ DIRECT(true, 0, 'inc_replace') enable_parallel_dml parallel(16) */ INTO tbl3 partition(p0, p1) SELECT t2.col1,1 FROM tbl4 partition(p0, p1) t2;
             Query OK, 3 rows affected
             Records: 3  Duplicates: 0  Warnings: 0

             ```

             ```shell
             obclient [test]> INSERT /*+ DIRECT(true, 0, 'inc_replace') enable_parallel_dml parallel(16) */ INTO tbl3 partition(p0, p1) SELECT t2.col1,1 FROM tbl4 partition(p0sp0_1, p1sp1_1) t2;
             Query OK, 3 rows affected
             Records: 3  Duplicates: 0  Warnings: 0

       ```

   ```

   查询结果如下：

   ```

   ```shell
   obclient [test]> EXPLAIN EXTENDED INSERT /*+ direct(true, 0, 'inc_replace') enable_parallel_dml parallel(16) */ INTO tbl3 SELECT t2.col1,t2.col3 FROM tbl4 t2 WHERE ROWNUM <= 10000;

   返回结果如下：

   ```shell
   +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
   | Query Plan                                                                                                                                                         |
   +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
   | =========================================================================================                                                                          |
   | |ID|OPERATOR                                      |NAME           |EST.ROWS|EST.TIME(us)|                                                                          |
   | -----------------------------------------------------------------------------------------                                                                          |
   | |0 |PX COORDINATOR                                |               |3       |34          |                                                                          |
   | |1 |└─EXCHANGE OUT DISTR                          |:EX10002       |3       |33          |                                                                          |
   | |2 |  └─INSERT                                    |               |3       |32          |                                                                          |
   | |3 |    └─EXCHANGE IN DISTR                       |               |3       |7           |                                                                          |
   | |4 |      └─EXCHANGE OUT DISTR (RANDOM)           |:EX10001       |3       |7           |                                                                          |
   | |5 |        └─MATERIAL                            |               |3       |3           |                                                                          |
   | |6 |          └─SUBPLAN SCAN                      |ANONYMOUS_VIEW1|3       |3           |                                                                          |
   | |7 |            └─LIMIT                           |               |3       |3           |                                                                          |
   | |8 |              └─EXCHANGE IN DISTR             |               |3       |3           |                                                                          |
   | |9 |                └─EXCHANGE OUT DISTR          |:EX10000       |3       |1           |                                                                          |
   | |10|                  └─LIMIT                     |               |3       |1           |                                                                          |
   | |11|                    └─PX BLOCK ITERATOR       |               |3       |1           |                                                                          |
   | |12|                      └─COLUMN TABLE FULL SCAN|T2             |3       |1           |                                                                          |
   | =========================================================================================                                                                          |
   | Outputs & filters:                                                                                                                                                 |
   | -------------------------------------                                                                                                                              |
   |   0 - output(nil), filter(nil), rowset=16                                                                                                                          |
   |   1 - output(nil), filter(nil), rowset=16                                                                                                                          |
   |       dop=16                                                                                                                                                       |
   |   2 - output(nil), filter(nil)                                                                                                                                     |
   |       columns([{TBL3: ({TBL3: (TBL3.__pk_increment(0x7efaad22b0e0), TBL3.COL1(0x7efaad2123f0), TBL3.COL3(0x7efaad212830))})}]), partitions(p0),                    |
   |       column_values([T_HIDDEN_PK(0x7efaad22b520)], [column_conv(NUMBER,PS:(-1,0),NULL,ANONYMOUS_VIEW1.COL1(0x7efaad22a860))(0x7efaad22b930)], [column_conv(NUMBER, |
   |       PS:(-1,0),NULL,ANONYMOUS_VIEW1.COL3(0x7efaad22aca0))(0x7efaad233850)])                                                                                       |
   |   3 - output([T_HIDDEN_PK(0x7efaad22b520)], [ANONYMOUS_VIEW1.COL1(0x7efaad22a860)], [ANONYMOUS_VIEW1.COL3(0x7efaad22aca0)]), filter(nil), rowset=16                |
   |   4 - output([T_HIDDEN_PK(0x7efaad22b520)], [ANONYMOUS_VIEW1.COL1(0x7efaad22a860)], [ANONYMOUS_VIEW1.COL3(0x7efaad22aca0)]), filter(nil), rowset=16                |
   |       is_single, dop=1                                                                                                                                             |
   |   5 - output([ANONYMOUS_VIEW1.COL1(0x7efaad22a860)], [ANONYMOUS_VIEW1.COL3(0x7efaad22aca0)]), filter(nil), rowset=16                                               |
   |   6 - output([ANONYMOUS_VIEW1.COL1(0x7efaad22a860)], [ANONYMOUS_VIEW1.COL3(0x7efaad22aca0)]), filter(nil), rowset=16                                               |
   |       access([ANONYMOUS_VIEW1.COL1(0x7efaad22a860)], [ANONYMOUS_VIEW1.COL3(0x7efaad22aca0)])                                                                       |
   |   7 - output([T2.COL1(0x7efaad229470)], [T2.COL3(0x7efaad229f40)]), filter(nil), rowset=16                                                                         |
   |       limit(cast(FLOOR(cast(10000, NUMBER(-1, -85))(0x7efaad227ef0))(0x7efaad25ac30), BIGINT(-1, 0))(0x7efaad25b6d0)), offset(nil)                                 |
   |   8 - output([T2.COL1(0x7efaad229470)], [T2.COL3(0x7efaad229f40)]), filter(nil), rowset=16                                                                         |
   |   9 - output([T2.COL1(0x7efaad229470)], [T2.COL3(0x7efaad229f40)]), filter(nil), rowset=16                                                                         |
   |       dop=16                                                                                                                                                       |
   |  10 - output([T2.COL1(0x7efaad229470)], [T2.COL3(0x7efaad229f40)]), filter(nil), rowset=16                                                                         |
   |       limit(cast(FLOOR(cast(10000, NUMBER(-1, -85))(0x7efaad227ef0))(0x7efaad25ac30), BIGINT(-1, 0))(0x7efaad25b6d0)), offset(nil)                                 |
   |  11 - output([T2.COL1(0x7efaad229470)], [T2.COL3(0x7efaad229f40)]), filter(nil), rowset=16                                                                         |
   |  12 - output([T2.COL1(0x7efaad229470)], [T2.COL3(0x7efaad229f40)]), filter(nil), rowset=16                                                                         |
   |       access([T2.COL1(0x7efaad229470)], [T2.COL3(0x7efaad229f40)]), partitions(p0)                                                                                 |
   |       limit(cast(FLOOR(cast(10000, NUMBER(-1, -85))(0x7efaad227ef0))(0x7efaad25ac30), BIGINT(-1, 0))(0x7efaad25b6d0)), offset(nil), is_index_back=false,           |
   |        is_global_index=false,                                                                                                                                      |
   |       range_key([T2.__pk_increment(0x7efaad25a720)]), range(MIN ; MAX)always true                                                                                  |
   | Used Hint:                                                                                                                                                         |
   | -------------------------------------                                                                                                                              |
   |   /*+                                                                                                                                                              |
   |                                                                                                                                                                    |
   |       USE_PLAN_CACHE( NONE )                                                                                                                                       |
   |       PARALLEL(16)                                                                                                                                                 |
   |       ENABLE_PARALLEL_DML                                                                                                                                          |
   |       DIRECT(TRUE, 0, 'INC_REPLACE')                                                                                                                               |
   |   */                                                                                                                                                               |
   | Qb name trace:                                                                                                                                                     |
   | -------------------------------------                                                                                                                              |
   |   stmt_id:0, stmt_type:T_EXPLAIN                                                                                                                                   |
   |   stmt_id:1, INS$1                                                                                                                                                 |
   |   stmt_id:2, SEL$1                                                                                                                                                 |
   |   stmt_id:3, parent:SEL$1  > SEL$658037CB > SEL$DCAFFB86                                                                                                           |
   | Outline Data:                                                                                                                                                      |
   | -------------------------------------                                                                                                                              |
   |   /*+                                                                                                                                                              |
   |       BEGIN_OUTLINE_DATA                                                                                                                                           |
   |       PARALLEL(@"SEL$DCAFFB86" "T2"@"SEL$1" 16)                                                                                                                    |
   |       FULL(@"SEL$DCAFFB86" "T2"@"SEL$1")                                                                                                                           |
   |       USE_COLUMN_TABLE(@"SEL$DCAFFB86" "T2"@"SEL$1")                                                                                                               |
   |       MERGE(@"SEL$658037CB" < "SEL$1")                                                                                                                             |
   |       USE_PLAN_CACHE( NONE )                                                                                                                                       |
   |       PARALLEL(16)                                                                                                                                                 |
   |       ENABLE_PARALLEL_DML                                                                                                                                          |
   |       OPTIMIZER_FEATURES_ENABLE('4.3.3.0')                                                                                                                         |
   |       DIRECT(TRUE, 0, 'INC_REPLACE')                                                                                                                               |
   |       END_OUTLINE_DATA                                                                                                                                             |
   |   */                                                                                                                                                               |
   | Optimization Info:                                                                                                                                                 |
   | -------------------------------------                                                                                                                              |
   |   T2:                                                                                                                                                              |
   |       table_rows:3                                                                                                                                                 |
   |       physical_range_rows:3                                                                                                                                        |
   |       logical_range_rows:3                                                                                                                                         |
   |       index_back_rows:0                                                                                                                                            |
   |       output_rows:3                                                                                                                                                |
   |       table_dop:16                                                                                                                                                 |
   |       dop_method:Global DOP                                                                                                                                        |
   |       avaiable_index_name:[TBL4]                                                                                                                                   |
   |       stats info:[version=0, is_locked=0, is_expired=0]                                                                                                            |
   |       dynamic sampling level:0                                                                                                                                     |
   |       estimation method:[DEFAULT, STORAGE]                                                                                                                         |
   |   Plan Type:                                                                                                                                                       |
   |       DISTRIBUTED                                                                                                                                                  |
   |   Note:                                                                                                                                                            |
   |       Degree of Parallelism is 16 because of hint                                                                                                                  |
   |       Direct-mode is enabled in insert into select                                                                                                                 |
   |   Expr Constraints:                                                                                                                                                |
   |       cast(FLOOR(cast(10000, NUMBER(-1, -85))), BIGINT(-1, 0)) >= 1 result is TRUE                                                                                 |
   +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
   96 rows in set (0.007 sec)

   ```

   ```

## 相关文档

- [FILES(...) 表函数（MySQL 模式）](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000006086414)。
 - [INSERT（MySQL 模式）](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005686084)

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