---
title: "产品介绍 - 导数工具 V4.3.4 | OceanBase 文档中心"
description: 产品介绍 OBLOADER/OBDUMPER（简称导数工具）是一款为 OceanBase 数据库量身打造的数据导入导出工具。工具同时支持导入导出数据库对象的结构定义与表数据，且具备丰富的 ETL 处理能力。 OBLOADER 什么是 OBLOADER OBLOADER 是一款使用 Java 语言开发的客户端工具，目前…
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*eAudSaxX8P0AAAAAAAAAAAAADiGDAQ/original) 导数工具V 4.3.4

# 产品介绍

更新时间：2026-04-02 22:00:50

[编辑](https://github.com/oceanbase/obdumper-loader-doc/edit/V4.3.4/zh-CN/200.product-introduction.md)  

OBLOADER/OBDUMPER（简称导数工具）是一款为 OceanBase 数据库量身打造的数据导入导出工具。工具同时支持导入导出数据库对象的结构定义与表数据，且具备丰富的 ETL 处理能力。

## OBLOADER

### 什么是 OBLOADER

OBLOADER 是一款使用 Java 语言开发的客户端工具，目前该工具仅适用于 OceanBase 数据库。您可以将存储介质中的数据库对象的定义文件和表数据文件导入到 OceanBase 数据库中，通常推荐 OBLOADER 与 OBDUMPER 搭配使用。如果您希望借助于 OBLOADER 完成数据迁移工作，它也兼容 mysqldump，Mydumper 等客户端工具导出的 CSV 格式的文件。

OBLOADER 专门优化了数据的导入性能，内置多种数据预处理函数，自动容错保证数据导入的稳定性，以及提供较为丰富的监控信息，以便您实时观测到数据文件导入的性能和进度。

### 产品功能

OBLOADER 主要具备以下功能特性：

- 支持从本地磁盘、Apache Hadoop、Aliyun OSS、Amazon S3、Tencent COS、Huawei OBS、Azure Blob 和 GCS 导入数据库对象定义和表数据。
 - 支持导入 mysqldump 导出的 SQL-Format 格式的文件。
 - 支持导入标准的 CSV、Insert SQL、ORC、Parquet 和 Avro 等格式的数据文件。
 - 支持丰富的数据清洗功能。
 - 支持多种错误处理策略。
 - 支持在导入前逻辑切分原始数据文件，从而充分发挥 CPU 多核性能。
 - 支持对命令行中指定的敏感参数进行加密。包括：数据库的账号密码，云存储的账号密钥。
 - 支持解压缩导入 OBDUMPER 压缩导出的 CSV、CUT、POS 和 SQL 等可读文件格式。
 - 支持导入 Batch Insert 格式的 SQL 文本文件，通过 `--sql` 指定文件格式。
 - 支持实时打印下发 SQL 的日志，默认输出路径：`<默认日志路径>/sql-monitor.log`。通过 `<工具根目录>/conf/log4j2.xml` 自定义配置。
 - 控制文件支持 SM3 摘要预处理函数，可以用于导入时数据转换。
 - 支持通过 SSL 协议连接数据库。
 - 支持导入 OceanBase 数据库（包括 MySQL 和 Oracle 兼容模式）的 GIS 类型数据。
 - 支持在 OceanBase 数据库 V4.2.1 及之后的版本并行导入 DDL。

### 注意事项

- 标准的 CSV 格式请参考 [RFC 4180](http://mirrors.nju.edu.cn/rfc/inline-errata/rfc4180.html) 规范，建议导入时严格遵从 RFC 4180 规范。
 - 导入大量数据时，请在运行的脚本中修改 JAVA 虚拟机的内存参数以便于提升性能。
 - 命令行参数指定的对象名、数据文件名、规则文件名要求大小写一致。OceanBase 数据库 MySQL 兼容模式默认表名为小写，OceanBase 数据库 Oracle 兼容模式默认表名为大写。如果需要区分大小写，请将表名放入中括号内（[ ]）。例如，`--table '[test]'` 表示 test 表，文件名格式为 `test.group.sequence.suffix`；`--table '[TEST]'` 表示 TEST 表，文件名格式为 `TEST.group.sequence.suffix`。

  其中，`group` 表示子任务号（由程序依子任务切分策略决定），`sequence` 表示文件滚动号（当文件大小超过 `--block-size`，则会发生滚动），`suffix` 表示文件拓展名。
 - 导入时，OBLOADER 可以识别的文件名格式为：“表名“ + 文件拓展名。您也可以使用 `--file-regular-expression` 命令行选项，通过正则表达式实现自定义的文件检索规则。
 - 数据库对象存在依赖（如表间外键依赖、触发器对序列的依赖等）时，请尽可能按依赖顺序依次导入。如果通过 `--all` 或者 `--table '*'` 导入，则无法严格保证导入顺序。
 - OceanBase 数据库 MySQL 兼容模式 V1.4.79 使用 `INSERT ... WHERE NOT EXISTS` 解决主键冲突时存在跨分区插入的错误。
 - OceanBase 数据库 MySQL 兼容模式 V1.4.x 组合分区表 RANGE_COLUMNS + KEY 在虚拟路由视图中的元数据有缺陷。
 - 无主键的表，暂不支持断点续传。
 - OceanBase 数据库 V3.2.4 及之后的版本使用 OBLOADER 前，请将系统配置项 `open_cursors` 设置为较大的值，否则导入可能会出现错误。数据导入结束后，请将该系统配置项重置成初始值。例如：`ALTER SYSTEM SET open_cursors = 65535；`。
 - 导入 DDL 时，当指定 `-f` 为 **非标准目录结构**（即非 OBDUMPER 导出生成的目录结构），请使用 `--mix` 选项代替 `--ddl` 选项。`--ddl` 选项适用于导入包含仅有一条 DDL 语句的文件，而 `--mix` 选项无此限制。

  当指定 `--sql` 选项时，文件数据格式遵循：一条语句只插入一条记录。如有不符，请指定 `--mix` 代替 `--sql` 进行导入。
 - OBLOADER 支持的文件格式如下：

     - DDL 文件：文件中的内容仅包含 DDL 语句，不包含表数据。
     - CSV 文件：符合 RFC 4180 规范的标准 CSV 格式。
     - SQL 文件：文件中的内容仅包含 `INSERT SQL` 语句，数据不换行。
     - ORC 文件：符合标准的 Apache ORC 的格式，默认使用 zstd 压缩。
     - Parquet 文件：符合标准的 Apache Parquet 的格式，默认使用 zstd 压缩。
     - MIX 文件：文件中的内容包含 DDL 语句，DML 语句等任意符合 SQL 标准的语句。
     - POS 文件：以固定字节长度定义的格式，暂不支持固定字符长度。
     - CUT 文件：数据列使用单字符或多字符进行分隔、且不带定界符。区别于标准的 CSV 格式。
     - Avro 文件：符合标准的 Apache Avro 的格式，文件扩展名为 `.avro`。

## OBDUMPER

### 什么是 OBDUMPER

OBDUMPER 是一款使用 Java 语言开发的客户端工具，目前该工具仅适用于 OceanBase 数据库。您可以使用该工具将 OceanBase 数据库中定义的对象和表数据以指定的文件格式导出到存储介质中。

如果您希望借助于 OBDUMPER 进行逻辑备份，可以直接将该工具集成到数据库运维系统中（注：不支持增量备份）。与 mysqldump 等客户端导出工具相比，OBDUMPER 具备以下显著的优势：

- 快速的数据导出能力，设计了多种数据查询策略，大幅提升导出的性能。
 - 丰富的数据交换能力，支持将表中数据以多种格式导出到多种存储介质。
 - 强大的数据处理能力，导出前对数据进行压缩，加密，脱敏，预处理等。

### 产品功能

OBDUMPER 主要具备以下功能特性：

- 支持导出数据库对象定义和表数据至本地磁盘、Aliyun OSS、Amazon S3、Tencent COS 和 Huawei OBS。
 - 支持将表中的数据按照 CSV、Insert SQL、ORC、Parquet 和 Avro 等格式导出到文件中。
 - 支持指定分区名，仅导出指定的表分区内的数据。
 - 支持指定全局的过滤条件，仅导出满足条件的数据。
 - 支持配置数据预处理规则，导出前对数据进行转换、脱敏等预处理。
 - 支持指定 SCN 或者 TIMESTAMP，仅导出有效事务点或者时间点的历史快照数据。
 - 支持从 OceanBase 的备副本中导出数据。（注：区别于备集群）
 - 支持指定自定义的查询语句，仅导出该查询语句的结果集。
 - 支持通过最新的快照版本以不锁表的方式导出全局一致的数据。
 - 支持对命令行中指定的敏感参数进行加密。包括：数据库的账号密码，云存储的账号密钥。
 - 支持压缩导出 CSV、CUT、POS 和 SQL 等可读文件格式。
 - 兼容 OBServer V4.3.0，支持列存表结构导出。
 - 支持在分区为空或条件查询结果集为空时生成空文件。
 - 支持实时打印下发 SQL 的日志，默认输出路径：`<默认日志路径>/sql-monitor.log`。通过 `<工具根目录>/conf/log4j2.xml` 自定义配置。
 - 控制文件支持 SM3 摘要预处理函数，可以用于导出时数据转换。
 - 支持通过 SSL 协议连接数据库。
 - 支持导出 OceanBase 数据库（包括 MySQL 和 Oracle 兼容模式）的 GIS 类型数据。

### 注意事项

- 标准的 CSV 格式请参考 [RFC 4180](http://mirrors.nju.edu.cn/rfc/inline-errata/rfc4180.html) 规范，建议导出严格遵从 RFC 4180 规范。
 - 导出大量数据时，请在运行的脚本中修改虚拟机的内存参数。
 - 命令行参数指定的对象名、数据文件名、控制规则文件名要求大小写一致。Oracle 兼容模式默认大写，MySQL 兼容模式默认小写。如果需要区分大小写，请将表名放入中括号内（[ ]）。例如：`--table '[test]'` 表示 test 表，文件名格式为 test.group.sequence.suffix； `--table '[TEST]'` 表示 TEST 表，文件名格式为 TEST.group.sequence.suffix。其中，`group` 表示子任务号（由程序依子任务切分策略决定），`sequence` 表示文件滚动号（当文件大小超过 `--block-size`，则会发生滚动），`suffix` 表示文件拓展名。
 - 外键中包含多列，导出时无法保证列的顺序。例如：FOREIGN KEY(c1,c2) REFERENCE (c1,c2)。
 - OceanBase 数据库 MySQL 兼容模式 V1.4.72 不支持导出唯一索引的定义。例如：UNIQUE(c1(10)) 。
 - OceanBase 数据库 MySQL 兼容模式 V1.4.x 不支持导出生成列的定义。例如：GENERATED ALWAYS AS (expr)。
 - OceanBase 数据库 MySQL 兼容模式 V2.2.7x 不支持导出垂直分区。例如：partition by column。
 - OceanBase 数据库 MySQL 兼容模式 V2.2.7x 不支持导出 SYNONYM 对象定义。
 - OceanBase 数据库 MySQL 兼容模式 V2.2.7x 不支持导出索引的存储列。例如：storing(column_list)。
 - OceanBase 数据库 Oracle 兼容模式下不支持导出 interval day(2) to second(0) 类型的数据。
 - Windows 系统不能使用 ！作为分隔符。数据库的对象名不能包含 \ / : * ? " < > | 等特殊符号，否则数据库对象定义和表数据都无法正常导出。
 - 导出表数据中包含生成列时默认会导出生成列的数据，可以使用 `--exclude-virtual-columns` 选项标识不导出生成列的数据。
 - 使用 `--date-value-format`, `--time-value-format`, `--datetime-value-format`, `--timestamp-value-format`, `--timestamp-tz-value-format`, `--timestamp-ltz-value-format` 选项时，请使用 Java 能够识别的日期与时间格式模版，否则导出会报错。
 - 导出 CUT 格式文件时，如果字段内容中出现指定的字段分隔符，会对字段中的分隔符字符进行转义。例如：字段内容为 `abc|def`，指定分隔符为 | （`--column-splitter "|"`），则导出的字段内容会转换为 `abc\|def`。
 - `--no-sys` 选项用于标识 OceanBase 数据库环境下用户无法提供 sys 租户的密码。导数工具 V3.3.0 及之后版本对云数据库 OceanBase 环境和 OceanBase 数据库环境进行了区分，`--public-cloud` 选项仅用于云数据库 OceanBase 环境，`--no-sys` 选项仅用于 OceanBase 数据库环境。
 - OceanBase 数据库 V3.2.4 及之后版本使用 OBDUMPER 前，请将系统配置项 `open_cursors` 设置为较大的值，否则导出可能会出现错误。数据导出结束后，请将该系统配置项重置成初始值。例如：`ALTER SYSTEM SET open_cursors = 65535；`
 - OceanBase 数据库 V4.0.0 及之后版本中表结构发生过任意的变更操作，无法使用 OBDUMPER 导出该表最近一次成功合并的基线数据（即一致性快照数据），用户可以手动发起一次合并以后，再重新导出最近一次成功合并的基线数据。
 - OceanBase 数据库 MySQL 兼容模式中关于日期/时间类型存储零值，使用 OBDUMPER V4.2.0 之前的版本导出数据时，JDBC 将零值日期时间转换为 NULL，如果该列定义为 NOT NULL 约束，导出数据将会报错。OBDUMPER V4.2.0 可以导出零值/日期时间，但导出时无法区分原始数据（NULL 或者零值），默认将数据强制转换成零值。其次 DATETIME 和 TIMESTAMP 两种数据类型导出的零值可能出现数据失真的问题，即某个非零近似值。数据库 sql_mode 变量中包含 NO_ZERO_DATE、NO_ZERO_IN_DATE 约束时，导出零值数据会报错。OceanBase 数据库 MySQL 兼容模式涉及零值问题的数据类型：DATE、DATETIME、TIME、YEAR 和 TIMESTAMP。
 - 结构导出功能差异

  | **租户** | **提供 sys 租户的密码** | **未提供 sys 租户的密码** |
  | MySQL compatible | 表、视图、表组、存储过程、函数 | 与 **提供 sys 租户的密码** 的导出行为基本相同，但是还存在以下遗留问题。    - OceanBase 数据库 V2.2.70 之前的版本无法导出表组定义。   - OceanBase 数据库 V2.2.70 之前的版本无法导出唯一索引的分区信息。   - OceanBase 数据库 Oracle 兼容模式 V2.2.30 及之前的版本无法导出索引定义。   - OceanBase 数据库 Oracle 兼容模式 V2.2.70（包含）~ V4.0.0 无法导出分区表的唯一索引定义。 |
  | Oracle compatible | 表、视图、触发器、同义词、序列、存储过程、函数、包、表组、类型 |

### 闪回导出

使用 FLASHBACK 导出数据时，需要设置合理的 `undo_retention` 系统变量。

假设 t1 为撤回（Undo）操作的时间点，且 t2 = t1 + 900s，则在 t2 时间点可以查询到 [t1,t2] 区间内的数据。设置 `undo_retention` 后，当前的会话仅对 t1 之后的时间点的数据有效，对 t1 时间点之前的数据无效。该参数默认单位：秒，默认值：0。设置 `undo_retention` 变量语句如下：

```sql
SET global undo_retention=900;

```

- sys 租户可以通过 `v$ob_timestamp_service` 视图来查询有效的 OceanBase SCN（System Change Number）。
 - 可通过固定时间点查询最近一次版本合并的数据。例如：t1 时间点发起合并，最早可查询到 t1 时间点的数据。
 - 如果所查询的表已被删除且放置在回收站，则需要先将该表从回收站中恢复。
 - 闪回查询受限于转储，如果发生转储且 `undo_retention` 变量未设置，则无法查询。
 - 设置 `undo_retention` 变量后，可查询 t1（转储时间点）+ `undo_retention` 变量设置的时间范围内的数据。

## 支持的 OceanBase 数据库

已支持的 OceanBase 数据库模式与版本，如下表所示：

| **OceanBase 模式** | **支持的版本号** |
| --- | --- |
| Oracle 兼容模式 | V2.0.x、V2.1.x、V2.2.20、V2.2.30、V2.2.50、V2.2.70、V2.2.71、V2.2.72、V2.2.76、V2.2.77、V3.1.x、V3.2.x、V4.0.0、V4.1.0、V4.2.0、V4.2.1、V4.2.2、V4.2.3、V4.2.4、V4.2.5、V4.3.0、V4.3.1、V4.3.2、V4.3.3、V4.3.4、V4.3.5 |
| MySQL 兼容模式 | V1.4.70、V1.4.72、V1.4.75、V1.4.78、V1.4.79、V2.2.30、V2.2.50、V2.2.70、V2.2.71、V2.2.72、V2.2.76、V2.2.77、V3.1.x、V3.2.x、V4.0.0、V4.1.0、V4.2.0、V4.2.1、V4.2.2、V4.2.3、V4.2.4、V4.2.5、V4.3.0、V4.3.1、V4.3.2、V4.3.3、V4.3.4、V4.3.5 |

#### 说明

- 导数工具 V3.0.0 已支持 OceanBase 社区版 V3.1.2 及之后版本。
 - 导数工具 V4.2.1 及之后的版本不再区分社区版和商业版。

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