基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
命令行选项
更新时间:2023-02-14 18:46:01
OBDUMPER 通过命令行选项指定导出所需要的信息,更多选项描述和使用示例,请参见 选项列表 与 使用示例 。
选项列表
| 选项 | 是否必选 | 说明 | 引入版本 | 是否废弃 |
|---|---|---|---|---|
| -h(--host) | 是 | 连接 ODP 或者 OceanBase 物理节点的主机地址。 | ||
| -P(--port) | 是 | 连接 ODP 或者 OceanBase 物理节点的主机端口。 | ||
| -c(--cluster) | 否 | 数据库的集群名。 | ||
| -t(--tenant) | 否 | 集群的租户名。 | ||
| -u(--user) | 是 | 数据库用户名。 | ||
| -p(--password) | 否 | 数据库密码。 | ||
| -D(--database) | 是 | 数据库名。 | ||
| -f(--file-path) | 是 | 指定数据的导出目录。 | ||
| --sys-user | 否 | 指定 sys 租户下用户名。 | ||
| --sys-password | 否 | 指定 sys 租户下特定用户的密码。 | ||
| --public-cloud | 否 | 打开限制模式。 | ||
| --log-path | 否 | 指定日志文件的输出目录。 | ||
| --ddl | 否 | 导出 DDL 文件。 | ||
| --csv | 否 | 导出 CSV 格式的数据文件。(推荐) | ||
| --sql | 否 | 导出 SQL 格式的数据文件。(区别于 DDL 文件) | ||
| --cut | 否 | 导出 CUT 格式的数据文件。 | ||
| --all | 否 | 导出所有已支持的数据库对象定义和表数据。 | ||
| --table-group | 否 | 导出 表组 定义。 | 3.1.0 | |
| --table | 否 | 导出 表 定义或者 表 数据。 | ||
| --view | 否 | 导出 视图 定义。 | ||
| --function | 否 | 导出 函数 定义。 | ||
| --procedure | 否 | 导出 存储过程 定义。 | ||
| --trigger | 否 | 导出 触发器 定义。 | ||
| --sequence | 否 | 导出 序列 定义。 | ||
| --synonym | 否 | 导出 同义词 定义。(暂不支持 MySQL 租户) | ||
| --type | 否 | 暂不支持。 | ||
| --type-body | 否 | 导出 类型体 定义。 | ||
| --package | 否 | 导出 程序包 定义。 | ||
| --package-body | 否 | 导出 程序包体 定义。 | ||
| --drop-object | 否 | 导出 DDL 时,前置追加 DROP 语句。 |
||
| --pl-delimiter | 否 | 指定 PL 语句之间的定界符。 | ||
| --distinct | 否 | 导出表中非重复的数据。 | 是 | |
| --weak-read | 否 | 导出备副本中的表数据。(区别于备集群) | ||
| --query-sql | 否 | 导出自定义的查询 SQL 语句的结果集。 | ||
| --snapshot | 否 | 导出最近一次合并版本的数据。 | ||
| --where | 否 | 导出满足条件的数据。 | ||
| --partition | 否 | 导出指定的分区内的数据。 | ||
| --skip-header | 否 | CSV 格式忽略导出表中的字段。 | ||
| --trail-delimiter | 否 | 删除行尾最后一个列分隔符。 | ||
| --null-string | 否 | 指定 NULL 的替代字符。默认值:\N 。 |
||
| --empty-string | 否 | 指定空字符(' ')的替代字符。值默认:\E 。 | ||
| --line-separator | 否 | 指定行分隔符。默认值:\n 。 | ||
| --file-encoding | 否 | 指定文件编码。(区别于数据库编码) | ||
| --column-separator | 否 | 指定列分隔符。(区别于 CUT 格式中的列分隔字符串) | ||
| --escape-character | 否 | 指定转义字符。默认值:\ 。 | ||
| --column-delimiter | 否 | 指定列定界符。默认值:' 。 | ||
| --column-splitter | 否 | 指定列分隔字符串。(区别于 CSV 格式中的列分隔符) | ||
| --flashback-scn | 否 | 指定导出闪回事务点之后的数据。(仅支持 OceanBase Oracle 2.2.70 及之后版本) | ||
| --flashback-timestamp | 否 | 指定导出闪回时间点之后的数据。(仅支持 OceanBase Oracle 2.2.70 及之后版本) | ||
| --nls-date-format | 否 | 设定会话级别的日期时间格式。(仅支持 OceanBase Oracle模式) | ||
| --nls-timestamp-format | 否 | 设定会话级别的时间戳格式。(仅支持 OceanBase Oracle模式) | ||
| --nls-timestamp-tz-format | 否 | 设定会话级别带时区的时间戳格式。(仅支持 OceanBase Oracle模式) | ||
| --retry | 否 | 从最近一次的保存点重新导出。 | ||
| --ctl-path | 否 | 指定控制文件所在的目录。 | ||
| --exclude-table | 否 | 排除导出指定的表定义和表数据。 | ||
| --exclude-column-names | 否 | 排除导出指定的列名所对应的数据。 | ||
| --exclude-data-types | 否 | 排除导出指定的数据类型所对应的数据。 | ||
| --include-column-names | 否 | 根据指定的字段顺序导出数据。 | ||
| --oss-point | 否 | 指定 OSS Bucket 所在地域的 Endpoint。 | ||
| --access-key | 否 | 指定 OSS 云存储的访问账号。 | ||
| --secret-key | 否 | 指定 OSS 云存储的访问密钥。 | ||
| --bucket-uri | 否 | 指定 OSS 云存储的资源路径。 | ||
| --file-name | 否 | 将每一张表导出的子文件分别合并成一个大文件。 | ||
| --remove-newline | 否 | 强制删除数据中的换行符或者回车符。(仅适用于 CUT 格式) | ||
| --max-file-size | 否 | 设置每张表最多导出的数据量。默认单位:MB。 | ||
| --skip-check-dir | 否 | 跳过检查数据的导出目录是否为空。(要求导出目录必须为空) | ||
| --retain-empty-files | 否 | 导出空表时默认生成一个空文件。 | ||
| --add-extra-message | 否 | 导出建表语句中的表组属性。 | ||
| --page-size | 否 | 导出查询语句的分页大小。默认值:10000。 | ||
| --thread | 否 | 导出任务的并发数。 | ||
| --block-size | 否 | 指定文件的分隔大小。默认值:1GB。 | ||
| --parallel-macro | 否 | 指定每一个导出线程处理的宏块数。 | ||
| --version | 否 | 查看 OBDUMPER 工具的版本号。 |
连接选项
OBDUMPER 命令需连接 OceanBase 数据库才可读写数据。用户指定以下选项可以连接到 OceanBase 数据库。
-h host_name , --host= host_name
用于连接 ODP 或者 OceanBase 物理节点的主机地址。
-P port_num , --port= port_num
用于连接 ODP 或者 OceanBase 物理节点的主机端口。
-c cluster_name , --cluster= cluster_name
用于连接给定的 OceanBase 集群。命令行未指定该选项时,表示当前连接的是数据库的物理节点,相关的选项(例如:
-h/-P)指定的是数据库物理节点的主机地址和端口;命令行指定该选项时,表示当前连接的是 ODP 服务,相关的选项(例如:-h/-P)指定的是 ODP 服务的主机地址和端口。-t tenant_name , --tenant= tenant_name
用于连接 OceanBase 数据库中给定的租户。有关"租户"的概念,请参考 OceanBase 官方文档。
-u user_name , --user= user_name
用于连接目标数据库的用户名。如果指定的用户名错误,则 OBDUMPER 无法连接到数据库。
-p ' password' , --password=' password'
用于连接 OceanBase 数据库的账号密码。命令行未指定该选项时,表示当前的数据库账户未设置密码;命令行指定该选项时,需要在参数值前后加上单引号。例如:
-p'******'。说明
在 Windows 操作系统上,需在参数值前后加上双引号。其它选项的参数值是字符串时也同样需要加双引号。-D database_name , --database= database_name
该选项表示从指定的数据库中导出数据库对象定义和表数据。
--sys-user sys_username
用于连接 sys 租户下拥有特定权限的用户。例如:root 用户或者 proxyro 用户。OBDUMPER 需要 sys 租户下的特殊用户查询系统表中的元数据。默认值:root。
--sys-password ' sys_password'
用于连接 sys 租户下拥有特定权限的账户密码。与
--sys-user选项搭配使用,默认情况下表示 sys 租户下 root 用户密码为空。命令行指定该选项时,需要在参数值前后加上单引号,例如:--sys-password '******'。说明
如果未指定该选项,OBDUMPER 无法查询系统表中的元数据,导出功能和导出性能可能会受到较大的影响。--public-cloud
用于标识用户无法指定
--sys-user,--sys-password选项,在限制模式下从数据库中导出数据库对象和表数据。但是在导出功能和性能方面会存在较大的影响。例如:无法导出指定分区内的数据,无法导出表注释和表索引,无法开启并行模式进行导出等。
功能选项
-f ' file_path ' , --file-path= ' file_path '
用于指定数据文件存放在本地磁盘的绝对路径。
--file-encoding ' encode_name '
用于表示导出数据文件时使用的文件编码,该编码不是数据库编码。命令行指定该选项时,需要在参数值前后加上单引号。例如:
--file-encoding 'GBK'。默认值: UTF-8 。--ctl-path ' control_path '
用于指定控制文件存放在本地磁盘的绝对路径。控制文件中可配置内置的处理函数,数据导出前根据配置的函数对数据进行预处理。例如:大小写转换、判空等。有关控制文件的使用,请参考 数据处理 章节。命令行指定该选项时,需要在参数值前后加上单引号。例如:
--ctl-path '/home/controls/'。--log-path ' log_path '
指定 OBDUMPER 运行日志的输出目录。命令行未指定该选项时,OBDUMPER 运行日志默认会输出到
-f选项指定的目录。没有特殊要求的情况下,无需使用重定向来输出日志。--ddl
用于标识导出 DDL 文件。DDL 文件是指导出的数据库对象定义文件,文件的命名规范为 对象名-schema.sql 。命令行指定该选项时,表示仅导出数据库对象定义,不会导出数据。导出多个表对象定义时,建议
--thread选项的参数值不超过 4。并发数太大会影响访问 sys 租户下的内部视图,导出时会出现超时错误。--sql
用于标识导出 SQL 格式的数据文件。SQL 文件是指数据按照 INSERT 语句格式存储,文件的命名规范为 表名.sql 。文件的内容是每一行表数据对应一条可执行的 INSERT 语句。SQL 文件在内容格式上明显区别于 DDL 文件。建议该选项搭配
--table选项使用。如果搭配--all选项时,OBDUMPER 只会导出表中的数据,不会导出数据库对象定义。--csv
用于标识导出 CSV 格式的数据文件。CSV 文件是指数据按照标准的 CSV 格式存储,文件的命名规范为 表名.csv 。有关 CSV 格式规范,请参考 RFC 4180 中的定义。CSV 格式最容易出错的是定界符,通常使用的定界符是单引号或者双引号。如果数据中存在定界符,必须做转义处理,即指定转义符,请参考 CSV 格式相关的符号选项。强烈建议使用 CSV 格式。建议该选项搭配
--table选项使用。如果搭配--all选项时,OBDUMPER 只会导出表中的数据,不会导出数据库对象定义。--cut
用于标识导出 CUT 格式的数据文件。CUT 文件是指数据使用字符串进行分隔的格式,文件的命名规范为 表名.dat 。建议该选项搭配
--table选项使用。如果搭配--all选项时,OBDUMPER 只会导出表中的数据,不会导出数据库对象定义。注意
CUT 格式要求数据整行存放。如果数据中出现分隔字符串、回车或者换行等特殊字符,OBDUMPER 会将数据中的特殊字符进行替换或者转义。--table-group '*table_group_name [,table_group_name...]*'|--table-group '*'
用于标识导出 表组 定义。除了不支持导出数据外,其它描述同
--table选项。--all
用于标识导出所有的数据库对象定义和表数据。该选项与
--ddl搭配使用时,表示导出所有的数据库对象定义;该选项与--csv,--sql,--cut任意一种数据格式选项搭配使用时,表示按照对应的格式导出所有表中的数据。如果需要导出所有的数据库对象定义和表数据,可指定--all,--ddl选项再搭配任意一种数据格式选项。注意
--all选项与任意的数据库对象选项之间都是互斥的,不可同时指定;如果同时指定--all选项与任意的数据库对象选项,则会优先执行--all选项命令。--table ' table_name [,table_name...] ' | --table ' * '
用于标识导出表定义或者表数据。该选项与
--ddl搭配使用时,表示仅导出表定义;该选项与任意一种数据格式选项搭配使用时,表示仅导出表数据。指定多个表时,表名用逗号分隔(,)。导出 Oracle 模式租户的表名默认按照大写处理,导出 MySQL 模式租户的表名默认按照小写处理;例如:OceanBase Oracle 模式下,--table 'test'和--table 'TEST'均表示 TEST 表;OceanBase MySQL 模式下,--table 'test'和--table 'TEST'均表示 test 表。如果需要区分大小写,请将表名放入中括号内([ ])。例如:--table '[test]'表示 test 表,--table '[TEST]'表示 TEST 表。如果表名指定为星号(*),表示导出所有的表定义或者表数据。--view ' view_name [, view_name...] ' | --view ' * '
用于标识导出 视图 定义。除了不支持导出数据外,其它描述同
--table选项。--trigger ' trigger_name [, trigger_name...] ' | --trigger ' * '
用于标识导出 触发器 定义。除了不支持导出数据外,其它描述同
--table选项。--sequence ' sequence_name [, sequence_name...] ' | --sequence ' * '
用于标识导出 序列 定义。除了不支持导出数据外,其它描述同
--table选项。目前仅适用于 OceanBase Oracle 模式。--synonym ' synonym_name [, synonym_name...] ' | --synonym ' * '
用于标识导出 同义词 定义。除了不支持导出数据外,其它描述同
--table选项。目前仅适用于 OceanBase Oracle 模式。--type ' type_name [, type_name...] ' | --type ' * '
暂不支持导出 类型 定义。
--type-body ' typebody_name [, typebody_name...] ' | --type-body ' * '
用于标识导出 类型体 定义。除了不支持导出数据外,其它描述同
--table选项。仅适用于 OceanBase Oracle 模式。--package ' package_name [, package_name...] ' | --package ' * '
用于标识导出 包 定义。除了不支持导出数据外,其它描述同
--table选项。仅适用于 OceanBase Oracle 模式。--package-body ' packagebody_name [, packagebody_name...] ' | --package-body ' * '
用于标识导出 包体 定义。除了不支持导出数据外,其它描述同
--table选项。仅适用于 OceanBase Oracle 模式。--function ' function_name [, function_name...] ' | --function ' * '
用于标识导出 函数 定义。除了不支持导出数据外,其它描述同
--table选项。--procedure ' procedure_name [, procedure_name...] ' | --procedure ' * '
用于标识导出 存储过程 定义。除了不支持导出数据外,其它描述同
--table选项。--drop-object
用于标识导出 DDL 文件时,在数据库对象创建语句前插入 DROP 语句。该选项仅与
--ddl选项搭配使用。--pl-delimiter ' delimiter_string '
用于标识导出 PL/SQL 定义时,在 PL/SQL 对象创建语句前后插入分隔标记。该选项仅与
--ddl选项搭配使用。默认值:$$。--snapshot
用于标识导出历史版本数据。该选项仅与任意一种数据格式选项搭配使用。导出历史版本数据旨在保证导出数据的全局一致性。如果命令行未指定该选项,则导出内存中的实时数据可能不是全局一致的数据快照。
--where ' where_condition_string '
用于标识导出满足指定条件的数据。该选项仅与任意一种数据格式选项搭配使用,不可搭配
--query-sql选项使用。--partition ' partition_name [, partition_name...] '
用于标识导出指定分区的数据。该选项的参数值是分区名,多个分区名用逗号分隔。该选项仅与任意一种数据格式选项搭配使用,不可搭配
--query-sql选项使用。--query-sql ' select_statement '
用于标识导出自定义查询语句的结果数据。该选项不与
--partition,--where选项搭配使用。用户需要保证自定义查询语句的正确性和查询性能。如果导出大查询语句的结果集,可能等待数据库的响应时间比较长。如果导出数据时需要利用控制文件进行数据预处理,则需要使用--table选项和--ctl-path选项,并且--table选项指定的表名需要与--ctl-path选项指定的文件名保持大小写一致。如果不需要进行预处理操作,则--table选项可指定为任意的表名。--flashback-scn ' scn_number '
用于导出 SCN 事务点之后的数据。该选项仅与任意一种数据格式选项搭配使用,不可与
--query-sql选项搭配使用。仅适用于 OceanBase Oracle 模式。--flashback-timestamp ' timestamp_string '
用于导出闪回时间点之后的数据。该选项仅与任意一种数据格式选项搭配使用,不可与
--query-sql选项搭配使用。仅适用于 OceanBase Oracle 模式。--nls-date-format ' date-format-string '
用于设置 Oracle 模式下的 nls_date_format 会话变量,其不代表将 DATE 类型的数据按照该选项指定的格式导出。默认值:yyyy-MM-dd HH:mm:ss。
--nls-timestamp-format ' timestamp-format-string '
用于设置 Oracle 模式下的 nls_timestamp_format 会话变量,其不代表将 TIMESTAMP 类型的数据按照该选项指定的格式导出。默认值:yyyy-MM-dd HH:mm:ss.SSSSSS。
--nls-timestamp-tz-format ' timestamp-tz-format-string '
用于设置 Oracle 模式下的 nls_timestamp_tz_format 会话变量,其不代表将 TIMESTAMP WITH TIME ZONE 类型的数据按照该选项指定的格式导出。默认值:yyyy-MM-dd HH:mm:ss.SSSSSS TZR。
--retry
用于从上一次导出失败位置继续导出任务。
注意
CHECKPOINT.bin 文件是工具运行时生成的保存点文件,路径位于-f指定的目录中。如果 CHECKPOINT.bin 文件不存在,无法使用该选项。--distinct
用于过滤表中的重复数据,仅与
--cut选项搭配使用。注意
该选项已废弃,请勿使用。--weak-read
用于标识从备副本导出数据。OBDUMPER 3.1.0 之前版本仅与 ODP 3.1.2 及之后版本搭配使用。OBDUMPER 3.1.0 及之后版本需要修改 conf/session.properties 文件中的参数
ob.proxy.route.policy=follower_first。关于 session.properties 文件的使用方法,请参见 OBDUMPER 使用示例 中的 设置会话级别变量 。--file-name ' file_name '
用于导出数据时将每一张表对应的子文件分别合并成一个大文件。
示例如下:
用法说明 使用示例 文件路径 将自定义查询的结果导出到 -f指定的目录--query-sql '查询语句' -f '/output' --file-name 'test.txt' /output/test.txt 将自定义查询的结果导出到 --file-name指定的文件--query-sql '查询语句' --file-name '/output/test.csv' /output/test.csv test 表数据导出到 -f指定目录--table 'test' -f '/output/' --file-name 'test.txt' /output/data/Database/TABLE/test.txt test 表数据导出到 --file-name指定的文件--table 'test' --file-name '/output/test.csv' /output/test.csv 将多张表数据导出到 -f指定的目录--table 'test1,test2' -f'/output'--file-name '*' /output/data/Database/TABLE/test1.csv, /output/data/Database/TABLE/test2.csv 将多张表数据导出到 --file-name指定的目录--table 'test1,test2' --file-name '/output/*' /output/test1.csv, /output/test2.csv
--max-file-size int_num
用于标识单个文件的大小限制。导出的数据超过该选项值时停止导出。
--skip-check-dir
用于标识跳过检查导出的数据目录是否为空。导出目录非空时,程序停止导出。
--remove-newline
用于标识导出数据时程序会强制删除数据中的回车符或者换行符。例如:
\r,\n,\r\n。其只会对读取到内存中的数据进行修改,并不会直接修改源表中的数据。该选项仅与--cut选项搭配使用。注意
源表中的数据包含回车符或者换行符时,指定该选项导出的数据和源表中的数据是不一致的。使用前请确认删除\r,\n,\r\n字符不会对业务造成影响。用户不需要删除数据中的回车符或者换行符时,请勿在命令行中指定该选项,避免造成业务数据不一致的问题。--retain-empty-files
用于标识导出空表时生成一份空文件。未指定该选项时,导出空表不会生成任何文件。
--add-extra-message
用于标识导出表定义时在 DDL 中包含额外的信息。例如:tablegroup。
--exclude-table ' table_name [, table_name...] '
用于表示导出表定义或者表数据时排除指定的表。表名支持模糊匹配。
使用示例:
--exclude-table 'test1,test*,*test,te*st'上述参数表示导出表定义或者表数据时排除的表包括:
- test1
- 所有的表名以 test 开头的表
- 所有的表名以 test 结尾的表
- 所有的表名以 te 开头以 st 结尾的表
--exclude-data-types ' datatype [, datatype...] '
用于表示导出数据时排除指定的数据类型。
--include-column-names ' column_name [, column_name...] '
用于根据指定的列名和列顺序导出数据。
--exclude-column-names ' column_name [, column_name...] '
用于表示导出数据时排除指定的列。列名不支持模糊匹配。
--skip-header
用于标识忽略导出表中的字段作为 CSV 文件头。该选项仅与
--csv选项搭配使用。--trail-delimiter
用于标识导出的数据行是否以分隔符结尾。该选项仅与
--cut或者--csv选项搭配使用。--null-string ' null_replacer_string '
用于标识 null 的替代字符串。该选项仅与
--csv或者--cut选项搭配使用。默认值: \N 。--empty-string ' empty_replacer_string '
用于标识空字符的替代字符串。该选项仅与
--csv或者--cut选项搭配使用。默认值: \E 。--line-separator ' line_separator_string '
用于指定行分隔字符串,该选项的默认值与系统平台相关,仅包括: \r , \n , \r\n 三种可选的值。
--column-separator ' column_separator_char '
用于指定列分隔字符串。该选项仅支持单字符,仅与
--csv选项搭配使用。默认值:逗号。--escape-character ' escape_char '
用于指定转义字符。该选项仅支持单字符,仅与
--csv或者--cut选项搭配使用。默认值:反斜杠。--column-delimiter ' column_delimiter_char '
用于指定字段定界符。该选项仅支持单字符,仅与
--csv选项搭配使用。默认值:单引号。--column-splitter ' split_string '
用于指定分隔字符串。该选项仅与
--cut选项搭配使用。--oss-point ' oss_endpoint_string '
用于标识 OSS 存储服务的连接地址。该选项必须与
--access-key,--secret-key搭配使用,用于连接 OSS 云存储服务。--access-key ' access_key_string '
用于标识连接 OSS 服务的访问者。该选项必须与
--oss-endpoint,--secret-key搭配使用,用于连接 OSS 云存储服务。--secret-key ' secret_key_string '
用于标识连接 OSS 服务的密钥串。该选项必须与
--oss-endpoint,--access-key搭配使用,用于连接 OSS 云存储服务。--bucket-uri ' bucket_uri_string '
用于标识 OSS 存储空间的资源位置。该选项必须与
--oss-endpoint,--access-key,--secret-key搭配使用,表示数据位于 OSS 云存储的指定位置中。
性能选项
--page-size int_num
用于指定查询语句的分页大小。默认值:10000。
--thread int_num
用于标识并发线程数。该选项直接对应导出线程数。默认值:CPU 乘以 2。导出多个数据库对象定义时,建议
--thread选项的参数值不要超过 4。并发数太大会影响工具访问 sys 租户下的系统表,导出时会出现超时错误。--block-size int_num
用于标识文件块的切分阈值。如果导出的数据文件超过该阈值,则依次生成其它子文件。默认值:1GB。
--parallel-macro int_num
用于标识一个线程可以处理的宏块数。默认值:8。
其它选项
-h, --help
用于查看命令行工具的使用帮助。
--version
用于查看当前发行的工具版本号。