首批通过分布式安全可靠测评,为关键业务系统打造
命令行选项
更新时间:2026-04-13 12:00:55
OBLOADER 通过命令行选项指定导入所需要的信息,更多选项描述和使用示例,请参考 选项列表 与 使用示例。
文件匹配规则说明
导入数据时,OBLOADER 会根据指定的命令行参数,查找符合规则的文件。OBLOADER 查找需要导入的数据文件的默认规则为 ${table_name}.${seq}.${file_type},其中 ${seq} 为可选项。例如,指定 --csv --table 'table1',OBLOADER 将递归查找符合 table1.${seq}.csv 规则的文件。
您也可以使用通配符指定需要导入的文件。例如,指定 --csv --table '*',OBLOADER 会查找所有的 CSV 文件,并将文件名按照 ${table_name}.${seq}.${file_type} 切分提取表名,以实现多表导入。
如果您需要导入的文件的文件名与表名无关,请搭配 --file-regular-expression 选项指定匹配规则。例如,文件名为 part-00123-bd461e82-c911-48ce-bfa0-ec1****.c000.snappy.orc,您可以通过 --orc --table 'table2' --file-regular-expression '.*.orc' 命令匹配到以 '.orc' 结尾的所有文件,并将其导入至指定的表 table2 中。
OBLOADER V4.3.2 及之后版本支持通过匹配规则指定单库多表进行导入。您可以通过分组名(包括 schema 和 table)来指定库名和表名,如果有且仅有 schema 的分组名,--table 必须指定为单表或者库中只有一张表,否则报错退出。支持的匹配规则如下。
库名.表名.csv:^(?<schema>[^.]+)(\.)(?<table>[^.]+)(\.)csv$
表名.csv:^(?<table>[^.]+)(\.)csv$
库名.表名.seq.csv:^(?<schema>[^.]+)(\.)(?<table>[^.]+)(\.)([^.]+\.)csv$
OBLOADER 根据表名与文件名的对应关系定位待导入的文件。例如,目标表名为 t1,选定格式为 --csv。此时默认的匹配文件后缀为 .csv。您可以通过 --file-suffix 来自定义文件后缀。OBLOADER 将遍历 -f 指定的路径,符合该表绑定关系的文件将包括 t1.csv、t1.0.csv 和 t1.1.2.csv 等。
如果待导入的文件名有其他的规则,或者没有任何命名规则,您可以通过指定 --file-regular-expression 选项,通过声明一个正则表达式,去匹配待导入的文件。例如,--file-regular-expression=“.*\.csv” 匹配任意以 .csv 结尾的文件名。--file-regular-expression=“.*” 匹配指定目录下的所有文件。
选项介绍
选项风格
OBLOADER 参数设计采用 Unix 和 GNU 两种风格方式。
Unix 风格的参数前加单破折线,选项为单字符,例如
ps -e。该风格的选项和参数之间可以不加空格,例如-p******。GNU 风格的长参数前加双破折线,选项为单字符或者字符串,例如
ps --version。要求选项和参数之间有空格,例如--table 'test'。
选项分类
OBLOADER 命令行选项分为基础选项和高级选项。
基础选项:OBLOADER 常用选项,包括连接选项(连接数据库模式)、功能选项(文件格式、数据库对象类型、存储路径)和其它选项。
高级选项:包括功能选项(时间戳格式、表/列黑白名单筛选、错误处理)、性能选项和其它选项。
必选选项
使用 OBLOADER 导入数据时,需要至少包含连接选项、格式选项、数据库对象类型选项、存储路径选项。
示例语句:
$./obloader -h xx.x.x.x -P 2883 -u test@mysql#cluster_a -p ****** -D USERA --csv --table '*' -f /output
其中,-h, -P, -u, -p, -D 为连接选项;--csv 为文件格式选项;--table 为数据库对象类型选项;-f 为存储路径。
基础选项
连接选项
OBLOADER 需要连接 OceanBase 数据库才可以读写数据。用户指定以下选项可以连接到 OceanBase 数据库。
导入类型
| 导入类型 | 相关命令行选项 |
|---|---|
| OceanBase 数据库 |
|
| 云数据库 OceanBase | --public-cloud 用于标识从云数据库 OceanBase 部署的 OceanBase 集群中导入数据库对象或者表数据。如果命令行指定该选项时则无需指定租户名和集群名连接选项( -u <user>@<tenant>#<cluster>),同时导入程序默认会打开 --no-sys 选项。关于 --no-sys 选项请参考对应的选项说明。使用 --public-cloud 或者 --no-sys 选项会影响导入的功能、性能以及稳定性。OceanBase 数据库 V2.2.30 及之后版本已支持服务端限流的功能,所以使用 --public-cloud 或者 --no-sys 选项时为保证数据导入的稳定性,可通过以下命令设置服务端限流阈值:alter system set freeze_trigger_percentage=50;alter system set minor_merge_concurrence=64;alter system set writing_throttling_trigger_percentage=80 tenant='xxx'; |
| ODP (Sharding) 逻辑库 |
|
旁路导入
OBLOADER V4.2.6 及之后的版本支持旁路导入数据,该功能支持的 OceanBase 数据库版本为 V4.2.1.x 系列中的 V4.2.1.7 及之后版本、V4.2.4.x 和 V4.3.0.x 系列中的 V4.3.0.1 及之后版本。
--rpc-port= rpc_port_num
用于连接 OBServer RPC 端口。该选项与
--direct,--parallel搭配使用,表示在旁路导入模式下连接 OBServer RPC 端口导入数据。说明
- 该选项仅适用于 OceanBase 数据库 V4.2.0 RC2 及之后的版本。
- 获取 OBServer RPC 端口方式:
- 连接 ODP 服务端时:
- 云数据库 OceanBase 环境下,ODP RPC Port 默认 3307。
- OceanBase 数据库环境下,默认端口 2885;如果需要自定义,可以在启动 ODP 时通过
-s选项进行指定。
- 连接 OBServer 服务端时,sys 租户下查询系统视图 DBA_OB_SERVERS 即可获取 OBServer 的 RPC 端口,默认端口 2882。
- 连接 ODP 服务端时:
--direct
用于开启旁路导入模式.该选项与
--rpc-port,--parallel搭配使用。--direct会根据目标表是否存在数据,使用不同的旁路导入模式。当目标表为空时,
--direct使用全量旁路模式,并且支持搭配--replace-data(表示数据冲突时的处理方式为replace)。当目标表非空时,
--direct使用增量旁路模式。如果目标表无索引或 LOB 字段,支持搭配--replace-data;如果目标表存在索引或 LOB 字段,则不支持搭配--replace-data。
说明
- OBLOADER 旁路导入模式暂时不支持二进制数据类型。
- OBLOADER 旁路导入模式支持连接 OBServer 和 ODP。对应的版本要求:
- 连接 OBServer 时:要求 OBServer 必须为 V4.2.0 及之后版本。
- 连接 ODP 时:要求 ODP 必须为 V4.3.0 及之后版本,且 OBServer 必须为 V4.2.1 及之后版本。
--parallel= parallel_num
用于旁路导入时加载数据的并行度。该选项与
--rpc-port,--direct搭配使用。
功能选项
文件格式
| 格式(命令行选项) | 相关命令行选项 | 适用场景 |
|---|---|---|
| --csv 用于标识导入 CSV 格式的数据文件。 |
|
适用于几乎所有的业务场景。 |
| --cut 用于标识导入 CUT 格式的数据文件。 |
|
参考 CSV。 多用于导入由某些老式平台导出的较为灵活的数据交换格式。 |
| --pos 用于标识导入 POS 格式的数据文件。 |
须与控制文件配合使用。 | 与某些仅支持定长格式的卸数平台进行交互。 |
| --sql 用于标识导入 SQL 格式的数据文件。 |
|
适用于仅导入数据而非结构的场景。仅支持一种 SQL 写法,但性能较好。 |
| --mix 用于标识导入 MIX 文件。 |
|
适用于导入任意格式的 sql 文件。兼容性更强,但对比 --sql 性能相差较大。 目前的实现是将文本全部读取进内存再解析,不适合处理数据量较大的文件。 |
| --par 用于标识导入 Parquet 格式的数据文件。 |
|
由 Hive, Spark 或其他能导出标准 Parquet 格式的数据源进行数据迁移。 |
| --orc 用于标识导入 ORC 格式的数据文件。 |
|
由 Hive, Spark 或其他能导出标准 ORC 格式的数据源进行数据迁移。 |
| --avro 用于标识导入 Avro 格式的数据文件。 |
--file-suffix 'suffix_name' 导入数据时,用于指定数据文件的后缀名。 |
多适用于大数据领域,支持 AP 业务离线迁移以及其他场景。 |
说明
命令行选项详情请参见本篇选项列表。
导入经 OBDUMPER 压缩导出的文件
导数工具 V4.3.0 及之后版本支持导入经 OBDUMPER 压缩导出的文件,支持导入的可读文件格式包括 CSV、CUT、POS 和 SQL。您可以通过下述命令行选项进行相关配置。
--compress
布尔值,用于标识是否为经 OBDUMPER 压缩导出的文件。
--compression-algo
字符串,用于标识 OBDUMPER 压缩导出时的压缩算法。可选值包括 zstd、zlib、gzip 和 snappy,默认值为 zstd。
--compression-level
整型,用于标识 OBDUMPER 压缩导出时的压缩等级。各类压缩格式支持的压缩等级如下:
zstd 支持 1 ~ 22,默认值为 3。
zlib 支持 -1 ~ 9,默认值为 -1。
gzip 和 snappy 不支持指定压缩等级。
数据库对象类型
--all
用于标识导入所有已支持的数据库对象定义和表数据。该选项与 --ddl 搭配使用时,表示导入所有的数据库对象定义文件;该选项与--csv, --sql, --cut, --pos 任意一种数据格式选项搭配使用时,表示导入所有对应格式的数据文件。如果需要导入所有的数据库对象定义和表数据,可指定 --all, --ddl 选项再搭配任意一种数据格式选项。
说明
--all选项与任意的数据库对象选项之间都是互斥的,不可同时指定;如果同时指定--all选项与任意的数据库对象选项,则会优先执行--all选项命令。--table-group 'table_group_name [,table_group_name...]' | --table-group '*'
用于标识导入 表组 定义。除了不支持导入数据外,其它描述同
--table选项。--table 'table_name [,table_name...]' | --table '*'
用于标识导入表定义或者表数据。该选项与
--ddl搭配使用时,表示仅导入表定义;该选项与任意一种数据格式选项搭配使用时,表示仅导入表数据。指定多个表时,表名用逗号分隔(,)。导入 OceanBase Oracle 模式租户的表名默认按照大写处理,导入 OceanBase MySQL 模式租户的表名默认按照小写处理;例如:OceanBase Oracle 模式下,--table 'test'和--table 'TEST'均表示 TEST 表;OceanBase MySQL 模式下,--table 'test'和--table 'TEST'均表示 test 表。如果需要区分大小写,请将表名放入中括号内([ ])。例如:--table '[test]'表示 test 表,--table '[TEST]'表示 TEST 表。如果表名指定为星号(*),表示导入所有的表定义或者表数据。注意
导入使用控制文件时,如果
--table指定的指定的表名大小写必须和数据库中保持一致,否则控制文件无法生效。--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 '*'
用于标识导入 类型 定义。除了不支持导入数据外,其它描述同
--table选项。仅适用于 OceanBase Oracle 模式。--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选项。--ddl
用于标识导入 DDL 文件。支持在 OceanBase 数据库 V4.2.1 及之后的版本并行导入 DDL。--character-set 'character_set_string' 用于指定创建数据库连接时的字符集。
--ignore-unhex 用于标识忽略对十六进制字符串进行解码。该选项仅适用于二进制数据类型。
--file-suffix 'suffix_name' 导入数据时,用于指定数据文件的后缀名。
--file-encoding 'encode_name' 用于表示读取数据文件时使用的文件编码,该编码不是数据库编码。
--source-type hive
用于标识从 Hive 存储路径中识别分区信息进行导入。导入时会将目录名为表名的多级子目录名解析为列值,支持的文件格式包括 ORC 和 Parquet。
--auto-column-mapping
用于标识列名自动映射,此时将根据源文件的列名和目标表列名进行对应导入,允许数据文件和目标表列数量不一致。目前支持的文件格式包括 CSV、Parquet 和 ORC。
注意
请勿同时配置
--ctl-path和--auto-column-mapping参数。
存储路径
-f 'file_path', --file-path= 'file_path'
用于指定数据文件存放的绝对路径。当文件存放在非本地文件系统时,您可以使用
--tmp-path来指定临时文件目录。OBLOADER 支持从本地磁盘、Aliyun OSS、Amazon S3、Apache Hadoop、Tencent COS、Huawei OBS、Azure Blob 和 GCS 导入数据库对象定义和表数据。语法格式如下:
[scheme://host]path[?parameters] parameters: key[=value],...组成部分 说明 scheme 支持的存储类型,包括 Aliyun OSS、Amazon S3、Apache Hadoop、Tencent COS 和 Huawei OBS。
如果指定的 scheme 不是当前支持的 OSS、S3、Hadoop、COS 和 OBS,则会报错。host 指定存储空间名称。 - 从 OSS、S3、COS 和 OBS 导入数据时,host 指代存储桶,详情请参见 OSS Bucket。
- 从 Apache Hadoop 导入数据时,该项为 Hadoop 节点,满足格式:
<ip>:<port>或<cluster_name>。
path 指定从存储空间导入数据的资源路径。路径必须以 /开头。parameters 指定请求所需的参数。
其中,parameters 可为单个 Key 或 Key-Value 对。支持的参数:
参数 是否需要 value 描述 支持的存储类型 支持版本 endpoint 是 - 用于指定 OSS host 所在地域的 Endpoint。
- 用于通过域名 Endpoint 访问 S3/COS/OBS。
OSS/S3/COS/OBS - OSS:V4.2.0
- S3:V4.2.5
- COS/OBS:V4.3.0
region 是 用于指定终端节点,为 bucket 所在的物理位置。 S3/COS/OBS - S3:V4.2.0
- COS/OBS:V4.3.0
storage-class 是 用于指定 Amazon S3 存储类。 S3 V4.2.0 access-key 是 用于指定存储的访问账号。 OSS/S3/COS/OBS - OSS/S3:V4.2.0
- COS/OBS:V4.3.0
secret-key 是 用于指定存储的访问密钥。 OSS/S3/COS/OBS - OSS/S3:V4.2.0
- COS/OBS:V4.3.0
hdfs-site-file 是 用于指定 hdfsSiteFile 配置文件,其中包含 Apache Hadoop 的配置信息,以设置 Apache Hadoop 的存储和访问规则,例如块大小和副本数量。 Apache Hadoop V4.2.1 core-site-file 是 用于指定 hdfsSiteFile 配置文件,其中包含 Hadoop 集群中的核心配置信息,例如 Apache Hadoop 文件系统的 URI 和默认文件系统。 Apache Hadoop V4.2.1 principal 是 用于指定 Kerberos 中的身份验证标识符。 Apache Hadoop V4.2.1 keytab-file 是 用于指定 Keytab 文件的绝对路径,以授权用户或服务访问系统的资源。 Apache Hadoop V4.2.1 krb5-conf-file 是 用于指定 Kerberos 配置文件路径。 Apache Hadoop V4.2.1 示例如下:
从本地磁盘导入数据
-f '/home/admin/foo/bar'从 S3 导入数据
-f 's3://bucket/path?region={region}&access-key={accessKey}&secret-key={secretKey}'从 OSS 导入数据
-f 'oss://mybucket/foo/bar?endpoint=myendpoint&access-key=myak&secret-key=mysk'从 Hadoop 导入数据
-f 'hdfs://***.*.*.*:9000/chang/parquet?hdfs-site-file=/data/0/zeyang/hdfs-site.xml&core-site-file=/data/0/zeyang/core-site.xml从 COS 导入数据
-f 'cos://mybucket/foo?region=ap-shanghai&access-key=myak&secret-key=mysk' -f 'cos://mybucket/foo?endpoint=yourendpoint&access-key=myak&secret-key=mysk'从 OBS 导入数据
-f 'obs://mybucket/foo?region=cn-north-1&access-key=myak&secret-key=mysk' -f 'obs://mybucket/foo?endpoint=yourendpoint&access-key=myak&secret-key=mysk'从 Azure Blob 导入数据
Azure Blob Storage 提供
wasb://和wasbs://(SSL 加密访问)的协议,有以下两种方式进行导入。将 sas token 拼接在 wasb 协议的 URI 后面作为
--file-path选项的值。wasb[s]://{container}@{accountName}.{endpointSuffix}/path/file ? SAS示例如下:
wasbs://test-data@loader.blob.core.chinxxxpi.cn/linxxx.csv?sv=2022-11-02&ss=bfqt&srt=sco&sp=rwdlacupitfx&se=2024-08-13T14:49:32Z&st=2024-08-13T06:49:32Z&spr=https&sig=m2AXglpESQPYrVvrhxxxx将 connection string 拼在 wasb 协议的 URI 后面作为
--file-path选项的值。除account key外,其他参数为可选项。wasb[s]://{container}@{accountName}.{endpointSuffix}/path/file ? account-key=xxxx wasb[s]://{container}@{accountName}.{endpointSuffix}/path/file ? default-endpoints-protocol=xxx & account-key=xxxx & account-name=xxx & endpoint-suffix=xxx示例如下:
wasbs://test-data@loader.blob.core.chixxxx.cn/lineitem1.csv?account-key=xxxx
从 GCS 导入数据
-f 's3://bucket/path?region={region}&access-key={accessKey}&secret-key={secretKey}'
--ctl-path 'control_path'
用于指定控制文件存放在本地磁盘的绝对路径。控制文件中可配置内置的处理函数,数据导入前根据配置的函数对数据进行预处理。例如:大小写转换,判空等。有关控制文件的使用,请参考 数据处理 章节。命令行指定该选项时,需要在参数值前后加上单引号。例如:
--ctl-path '/home/controls/'。注意
请勿同时配置
--ctl-path和--auto-column-mapping参数。--log-path 'log_path'
指定 OBLOADER 运行日志的输出目录。命令行未指定该选项时,OBLOADER 运行日志默认会输出到
-f选项指定的目录。没有特殊要求的情况下,无需使用重定向来输出日志。
其它选项
-H, --help
用于查看命令行工具的使用帮助。
-V, --version
用于查看当前发行的工具版本号。
高级选项
功能选项
时间戳格式
--nls-date-format 'date-format-string'
用于设置 OceanBase Oracle 模式下数据库连接中的日期格式。默认值:YYYY-MM-DD HH24:MI:SS。
--nls-timestamp-format 'timestamp-format-string'
用于设置 OceanBase Oracle 模式下数据库连接中的时间戳格式。默认值:YYYY-MM-DD HH24:MI:SS:FF9。
--nls-timestamp-tz-format 'timestamp-tz-format-string'
用于设置 OceanBase Oracle 模式下数据库连接中包含时区的时间戳格式。默认值:YYYY-MM-DD HH24:MI:SS:FF9 TZR。
黑白名单筛选
表黑白名单筛选
--exclude-table 'table_name [, table_name...]'
用于表示导入表定义或者表数据时排除指定的表。表名支持模糊匹配。
使用示例:
--exclude-table 'test1,test*,*test,te*st'上述参数表示导入表定义或者表数据时排除以下符合条件的表:
test1
所有的表名以 test 开头的表
所有的表名以 test 结尾的表
所有的表名以 te 开头且以 st 结尾的表
--exclude-data-types 'datatype [, datatype...]'
用于表示导入数据时排除指定的数据类型。
--file-regular-expression
用于导入单库单表或单库多表文件时,根据指定的正则表达式选择性地导入指定的文件。该选项仅适用于单库数据导入。例如:
--file-regular-expression ".*",表示使用".*"正则表达式匹配目录下的所有文件,*表示匹配零个或多个任意字符;--file-regular-expression ".*\\.csv",表示使用".*\.csv"正则表达式匹配以".csv"结尾的文件,其中"\."表示匹配实际的句点字符"."。
列黑白名单筛选
--include-column-names 'column_name [, column_name...]'
用于根据指定的列名导入数据。
--exclude-column-names 'column_name [, column_name...]'
用于排除导入时指定的列名所对应的数据。
注意
- 指定的列名需要与表结构中的列名大小写保持一致。
- 导入的数据文件中,被排除的列无对应的数据且被导入的列顺序与表中列顺序需要保持一致。
错误处理
--max-discards int_num
指定该选项可以限制每一张表的重复数据的最大值。如果任意一张表的重复数据超过最大值,则停止导入该表的数据,日志记录该表导入失败,不影响其它表导入。默认值:-1,表示忽略重复数据继续导入。
说明
表中包含主键或者唯一键且数据出现重复时,该选项才会生效。
--retry
用于标识导入任务从中断点进行重试。使用建议:如果导入的数据量已超过 80%,可指定该选项进行断点续传,避免重新导入(断点续传的过程中可能有少量的数据出现重复错误);如果已经导入的数据量不多,可清空表重新开始导入,效率更高。
注意
- load.ckpt 文件是工具运行时生成的保存点文件,路径位于
-f指定的目录中。如果 load.ckpt 文件不存在,无法使用该选项。 - 该选项不适用于旁路导入。
- load.ckpt 文件是工具运行时生成的保存点文件,路径位于
--max-errors int_num
指定该选项可以限制每一张表导入时遇到错误数的最大值。如果任意一张表导入的错误数超过最大值,则停止导入该表的数据,日志记录该表导入失败。该选项可选的值分别是 0、-1 和正整数 N。指定参数值为 -1 时,表示忽略错误,继续导入。默认值:1000。
--strict= 'strict_string'
用于导入时控制脏数据对进程结束状态的影响。默认值:true,表示导入的数据中存在 Bad Record 或者 Discard Record 类型错误时会以失败状态结束程序(
System exit 1);false,表示导入的数据中存在 Bad Record 或者 Discard Record 类型错误时,不影响程序最终结束状态(System exit 0)。说明
该选项可与
--max-discards或者--max-errors选项搭配使用,表示当重复数据量或者错误数在指定范围内,会跳过错误继续进程。更多详情请参见 错误处理。--replace-data
用于标识替换表中重复的数据。该选项仅适用于已定义主键或者是已定义唯一键(包含非空字段)的表。如果文件中重复的数据较多,占比超过总数据量 30% 以上,建议清理表重新导入。数据替换的性能低于空表导入的性能。该选项与
--csv,--sql,--cut选项搭配使用,对--ddl选项不生效。注意
- 文件和表中出现重复的数据时,表中的数据会被替换为文件中的数据。
- 对于无主键或者无唯一键的表,该选项会在表中追加写入数据。
- 用户不需要替换重复数据时,请勿在命令行中指定该选项,避免对业务造成影响。
性能选项
--rw float_num
用于标识文件解析线程占总线程数的比例。默认值:1。
该选项与
--thread选项搭配使用,可计算出文件解析线程数等于--thread选项值 *--rw选项值。--slow float_num
用于标识工具进入慢导模式的阈值。当 OceanBase 内存占用达到 75% 时,OBLOADER 会自动降速,防止数据库内存占用持续快速上升。默认值:0.75。
--pause float_num
用于标识工具进入停导模式。当 OceanBase 内存占用达到 85% 时,OBLOADER 会自动停止导入,防止数据库内存水位过高引发内存问题。默认值:0.85。
--batch int_num
用于标识批量写入的事务大小。建议该选项的值与表的宽度成反比的关系,但不可设置过大导致数据库内存溢出。默认值:200。
说明
OBLOADER V4.2.0 及之后的版本支持根据 JAVA 虚拟机的内存自适应
--batch的默认值。使用 OBLOADER V4.2.8.1 和 V4.2.8.2 时,可能会导致实际执行 Prepared Statement 的参数数量超限,从而引起 ODP core。如果出现上述问题,您可以手动设置该选项为一个合理的值。
--thread int_num
用于标识并发线程数。该选项直接对应写入线程数。与
--rw选项搭配使用时,用于计算文件解析线程数,计算公式:--thread参数值 *--rw参数值。默认值为CPU 乘以 2,如果 CPU 大于 16,则默认上限为 32。说明
OceanBase 数据库 V4.2.1 及之后的版本支持并行导入 DDL。导入 OceanBase 数据库 V4.2.1 之前版本的数据库对象定义时,无需指定该选项。
--block-size
用于标识文件块的切分阈值,支持的 LONG 数据类型。例如,
--block-size 64表示单个文件大小不超过 64MB。指定该选项时无需显式标注单位,默认单位为 MB,默认值为 64。默认情况下 OBLOADER 对大文件按照 64MB 自动拆分成多份逻辑子文件,逻辑子文件不会占用额外的存储空间。--max-tps int_num
用于标识最大导入的 TPS。指定该选项时,可保证平稳的导入速率。
--max-wait-timeout int_num
用于标识 OceanBase 服务端合并的等待时长。指定该选项时,无需显式标注单位,默认单位:小时。OceanBase 服务端处于合并状态时,客户端进入停导模式,最大等待时长不可超过该选项的值。默认值:3。
其它选项
--truncate-table
用于标识导入数据前对目标库中表进行 Truncate 操作。该选项仅与任意一种数据格式选项搭配使用,其与
--all或者--table '*'选项搭配使用时,表示 Truncate 数据库中所有的表。如果仅需要 Truncate 部分表,可以显式指定--table 'test1,test2,[....]'。该选项与--with-data-files选项搭配使用时,表示仅 Truncate 有对应数据文件 的表。注意
- 导入数据使用
--all或者--table '*'选项搭配--truncate-table选项时,程序会 Truncate 目标库中所有的表,即使-f选项指定的目录下没有表对应的数据文件,程序也会执行 truncate table 操作。 - 请勿使用该选项对目标库或者目标表进行 Truncate 操作,强烈建议用户根据业务需求手动 Truncate 表,避免对业务造成影响。
- 导入数据使用
--with-data-files
该选项与
--truncate-table或者--delete-from-table选项搭配使用时,表示导入数据前 Truncate 或者清空有对应数据文件的表。单独指定该选项无任何意义。--delete-from-table
用于标识导入数据前删除目标库中所有的表中的数据。该选项仅与任意一种数据格式选项搭配使用,其与
--all或者--table '*'选项搭配使用时,表示删除目标库中所有表中的数据。如果仅需要删除部分表中的数据,可以显式指定--table 'test1,test2,[....]'。该选项与--with-data-files选项搭配使用,表示仅删除有对应数据文件的表中的数据。注意
- 导入数据使用
--all或者--table '*'选项搭配--delete-from-table选项时,程序会删除目标库中所有表中的数据,即使-f选项指定的目录下没有表对应的数据文件,程序也会执行 delete from table 操作。 - 请勿使用该选项删除目标库或者目标表中的数据,特别是数据量比较大的表。强烈建议用户根据业务需求手动删除表中的数据,避免对业务造成影响。
- 导入数据使用
--replace-object
用于标识导入数据库对象定义时替换已存在的数据库对象定义。对于 表 、 同义词 等对象使用先删除再创建的方式进行替换;对于 函数 、 存储过程 等对象使用 CREATE OR REPLACE 进行替换。该选项仅与
--ddl或者--mix选项搭配使用,对--csv,--sql等其它数据格式选项不生效。注意
- 目标库中已经存在对象时,该对象会被强制替换成文件中所保存的对象定义。
- 用户不需要替换数据库中的对象时,请勿使用该选项,避免对业务造成影响。
--session-config
用于指定 连接配置 文件。程序包中已为您提供一份默认的配置文件:
<工具根目录>/conf/session.config.json,您无需配置即可生效。建议仅当您需要使用同一份程序包加载多份连接配置时指定该选项。
选项列表
| 选项 | 是否必选 | 说明 | 引入版本 | 是否废弃 |
|---|---|---|---|---|
| -h(--host) | 是 | 连接 ODP 或者 OceanBase 物理节点的主机地址。 | ||
| -P(--port) | 是 | 连接 ODP 或者 OceanBase 物理节点的主机端口。 | ||
| --rpc-port | 否 | 连接 OBServer RPC 端口。 | V4.2.5 | |
| --compat-mode | 否 | 兼容性导入 MySQL 表结构定义。 导入 MySQL 表结构定义时,OBLOADER 会将 MySQL 的原生建表语句转换为 OceanBase MySQL 模式支持的同义语句。 注意
|
V4.2.7 | |
| --direct | 否 | 指定旁路导入模式。 | V4.2.5 | |
| --parallel | 否 | 标识旁路导入时加载数据的并行度。 | V4.2.6 | |
| -u(--user) | 是 | 指定数据库用户名、集群的租户名、集群名。 格式:<user>@<tenant>#<cluster>。 |
||
| -p(--password) | 否 | 数据库密码。 | ||
| -D(--database) | 否 | 数据库名。 | ||
| -f(--file-path) | 是 | 数据文件所在的目录或者数据文件绝对路径。 | ||
| --sys-user | 否 | 指定 sys 租户下用户名。 | ||
| --sys-password | 否 | 指定 sys 租户下特定用户的密码。 | ||
| -t | 否 | 该参数搭配 --public-cloud 使用,指定连接 OceanBase 数据库的租户名。
注意云上旁路导入时,您需要搭配 |
||
| --public-cloud | 否 | 用于标识从云数据库 OceanBase 部署的 OceanBase 集群中导入数据库对象或者表数据。
注意云上旁路导入时,您需要搭配 |
||
| --file-suffix | 否 | 指定数据文件的后缀名。 通常文件的后缀名与文件格式具有一定的关联性。例如:CSV 格式的文件通常命名为 xxx.csv。用户未严格遵守规范的情况下,可将 CSV 格式的文件命名为 xxx.txt 等任意的后缀,导致 OBLOADER 无法根据格式来识别目标文件。该选项为可选项,每一种数据格式均有对应的默认值。默认情况下,CSV 格式对应的文件后缀名为 .csv,SQL 格式对应的文件后缀名为 .sql,CUT 格式对应的文件后缀名为 .dat,POS 格式对应的文件后缀名为 .dat。命令行指定该选项,需要在参数值前后加上单引号。例如: --file-suffix '.txt'。 |
||
| --file-encoding | 否 | 指定文件编码。(区别于数据库编码) 命令行指定该选项时,需要在参数值前后加上单引号。例如: --file-encoding 'GBK'。默认值: UTF-8 。 |
||
| --ctl-path | 否 | 指定控制文件所在的目录。 | ||
| --log-path | 否 | 指定日志文件的输出目录。 | ||
| --ddl | 否 | 导入 DDL 文件,支持在 OceanBase 数据库 V4.2.1 及之后的版本并行导入 DDL。 DDL 文件是指数据库对象定义文件,文件的命名规范为 对象名-schema.sql 。命令行指定该选项时,表示仅导入数据库对象定义,不会导入表数据。 注意文件中避免出现注释或者开关语句等。如果数据库对象之间存在依赖,可能会导入失败,需要人工介入处理。 |
||
| --csv | 否 | 导入 CSV 格式的数据文件。(推荐) CSV 文件是指数据按照标准的 CSV 格式存储,文件的命名规范为 表名.csv 。有关 CSV 格式规范,请参考 RFC 4180 中的定义。CSV 格式最容易出错的是定界符,通常使用的定界符是单引号或者双引号。如果数据中存在定界符,必须做转义处理,即指定转义符,否则 OBLOADER 无法解析错误的数据格式。强烈建议使用 CSV 格式。建议该选项搭配 --table 选项使用。如果搭配 --all 选项使用时,OBLOADER 只会导入表对应的数据文件,不会导入数据库对象定义。 |
||
| --sql | 否 | 导入 SQL 格式的数据文件。(区别于 DDL 文件) SQL 文件是指数据按照 INSERT 语句格式存储,文件的命名规范为 表名.sql。文件的内容是每一行表数据对应一条可执行的 INSERT 语句。导数工具 V4.3.1 及之后版本支持导入 Batch Insert 格式的 SQL 文本文件。SQL 文件在内容格式上明显区别于 DDL 文件。建议该选项搭配 --table 选项使用。如果搭配 --all 选项使用时,OBLOADER 只会导入表对应的数据文件,不会导入数据库对象定义。
注意数据中不可有 SQL 函数、特殊字符、换行等,否则文件可能无法被正常解析。 |
||
| --orc | 否 | 导入 ORC 格式的数据文件。 ORC 文件是指数据按照列格式进行存储,文件的命名规范为 表名.orc 。请参考 Apache ORC 格式定义。 |
V4.0.0 | |
| --par | 否 | 导入 Parquet 格式的数据文件。 Parquet 文件是指数据按照列格式进行存储,文件的命名规范为 表名.parquet 。请参考 Apache Parquet 格式定义。 说明使用 OBLOADER V4.2.5 及之前的版本导入 Parquet 文件时,不支持 DECIMAL, DATE, TIME, TIMESTAMP 数据类型。 |
V4.0.0 | |
| --mix | 否 | 导入定义与数据的混合文件。 MIX 文件是指导出的 DDL 语句和 DML 语句混合在一起的文件。文件无严格的命名规范。 注意MIX 文件无严格的格式,处理过程复杂且性能差,不建议使用。 |
||
| --pos | 否 | 导入 POS 格式的数据文件。 POS 文件是指数据按照定长字节数的格式存储,文件的命名规范为 表名.dat 。定长字节数是指每一列数据使用固定长度的字节数来存放。长度不足补空格,长度超出则截断,按照字节截断可能会出现数据乱码。建议该选项搭配 --table 选项使用。如果搭配 --all 选项使用时,OBLOADER 只会导入表对应的数据文件,不会导入数据库对象定义。(区别于定长字符格式)。 |
||
| --cut | 否 | 导入 CUT 格式的数据文件。 CUT 文件是指数据使用单个字符或者字符串进行分隔的格式,文件的命名规范为 表名.dat 。如何准确辨识 CUT 格式与 CSV 格式?CSV 格式使用单个字符分隔字段,常用的字段分隔符是逗号;CUT 格式一般使用字符串分隔字段。例如:使用 |@| 字符串分隔字段。CSV 格式使用单引号或者双引号作为字段间的定界符,CUT 格式无定界符。建议该选项搭配 --table 选项使用。如果搭配 --all 选项使用时,OBLOADER 只会导入表对应的数据文件,不会导入数据库对象定义。
注意CUT 格式要求数据整行存放。如果字段分隔符是单个字符时,避免数据中出现分隔符、回车或者换行等特殊字符,否则 OBLOADER 无法正确解析数据。 |
||
| --avro | 否 | 导入 Avro 格式的数据文件。 Avro 文件是指符合 Apache 标准的 Avro 格式文件,文件扩展名为 .avro。支持导入的数据类型及限制如下:
|
V4.3.0 | |
| --all | 否 | 导入所有已支持的数据库对象定义和表数据。 | ||
| --table-group | 否 | 导入 表组 定义。 | V3.1.0 | |
| --table | 否 | 导入 表 定义或者 表 数据。 | ||
| --view | 否 | 导入 视图 定义。 | ||
| --trigger | 否 | 导入 触发器 定义。 | ||
| --sequence | 否 | 导入 序列 定义。 | ||
| --synonym | 否 | 导入 同义词 定义。 | ||
| --type | 否 | 导入 类型 定义。 | V4.0.0 | |
| --type-body | 否 | 导入 类型体 定义。 | ||
| --package | 否 | 导入 程序包 定义。 | ||
| --package-body | 否 | 导入 程序包包体 定义。 | ||
| --function | 否 | 导入 函数 定义。 | ||
| --procedure | 否 | 导入 存储过程 定义。 | ||
| --replace-object | 否 | 标识替换已存在的对象定义。(不推荐使用,建议手动替换) | ||
| --rw | 否 | 指定数据文件解析线程的比例。 | ||
| --slow | 否 | 指定触发慢速导入的阈值。 | ||
| --pause | 否 | 指定触发停止导入的阈值。 | ||
| --batch | 否 | 指定每一批事务的记录数。 | ||
| --thread | 否 | 指定导入任务的并发数。 | ||
| --block-size | 否 | 指定文件的分隔大小。 | ||
| --retry | 否 | 从最近一次的保存点重新导入。 | ||
| --max-tps | 否 | 指定导入的限速阈值。默认单位:行数/秒。 | ||
| --max-wait-timeout | 否 | 指定等待数据库合并的最长超时时间。 | ||
| --nls-date-format | 否 | 设置会话级别的日期时间格式。(仅支持 OceanBase Oracle 模式) | ||
| --nls-timestamp-format | 否 | 设置会话级别的时间戳格式。(仅支持 OceanBase Oracle 模式) | ||
| --nls-timestamp-tz-format | 否 | 设置会话级别带时区的时间戳格式。(仅支持 OceanBase Oracle 模式) | ||
| --trail-delimiter | 否 | 删除行尾最后一个列分隔符。 | ||
| --with-trim | 否 | 删除数据左右的空格字符。 | ||
| --skip-header | 否 | 跳过 CSV/CUT 文件的第一行数据。 仅 V3.3.0 及之后版本支持跳过 CUT 文件的第一行数据。 | ||
| --skip-footer | 否 | 导入 CUT 格式文件时跳过文件的最后一行数据。 | V3.3.0 | |
| --null-string | 否 | 指定字符替换为 NULL。默认值:\N 。 | ||
| --empty-string | 否 | 指定字符替换为空字符(' ')。默认值:\E 。 | ||
| --line-separator | 否 | 指定行分隔符。导入 CUT 格式文件时支持自定义行分隔符。默认值:\n 。 导入 CUT 格式文件时支持自定义数据文件换行符。该选项的默认值与系统平台相关,仅包括: \r, \n, \r\n 三种可选的值。 |
||
| --column-separator | 否 | 指定列分隔符。(区别于 CUT 格式中的列分隔字符串) | ||
| --escape-character | 否 | 指定转义字符。该选项仅支持单字符,仅与 --csv 或者 --cut 选项搭配使用。
说明如果需要指定该选项为特殊(不可见)字符时,请使用 HEX 表示(即使用该字符在编码表的十六进制数来指定不可见或控制字符)。例如,您可以使用 '\x09' 表示不可见的 Tab 字符。 |
||
| --column-delimiter | 否 | 指定字符串定界符。该选项仅支持单字符,仅与 --csv 选项搭配使用。默认值:单引号' 。 |
||
| --ignore-unhex | 否 | 忽略为十六进制字符串进行解码。 | ||
| --exclude-table | 否 | 忽略导入指定的表定义和表数据。 | ||
| --exclude-data-types | 否 | 跳过导入指定的数据类型的数据。 | ||
| --column-splitter | 否 | 指定列分隔字符串。(区别于 CSV 格式中的列分隔符) | ||
| --max-discards | 否 | 指定导入时单表最多的重复数据量。默认值:-1。 | ||
| --max-errors | 否 | 指定导入时单表允许的最多错误次数。默认值:1000。 | ||
| --include-column-names | 否 | 根据指定的列名导入数据。 | ||
| --exclude-column-names | 否 | 排除导入时指定的列名所对应的数据。 | ||
| --replace-data | 否 | 标识替换重复的数据。(仅适用于有主键或者有唯一键且非空列的表) | ||
| --truncate-table | 否 | 标识导入前 Truncate 目标库中的表。(不推荐使用,建议手动 Truncate 表) | ||
| --with-data-files | 否 | 标识选择有数据文件的表进行 Truncate 或者删除表中的数据。 | V3.1.0 | |
| --delete-from-table | 否 | 标识导入数据前删除目标库中所有的表中的数据。(不推荐使用,建议手动删除表中的数据) | ||
| -V(--version) | 否 | 查看 OBLOADER 版本号。 | ||
| --no-sys | 否 | 标识 OceanBase 数据库环境下无法提供 sys 租户密码。 | V3.3.0 | |
| --logical-database | 否 | 标识连接 ODP (Sharding) 逻辑库进行导入。 | V3.3.0 | |
| --file-regular-expression | 否 | 标识单库单表或单库多表导入的文件名的正则表达式。 | V3.3.0
说明V4.3.2 及之后版本支持通过正则表达式筛选单库多表进行导入。 |
|
| --ignore-escape | 否 | 标识导入 CUT 格式文件时忽略对字符进行转义操作。 | V3.3.0 | |
| --character-set | 否 | 标识创建数据库连接时的字符集。 默认值: session.properties 文件中 会话变量 jdbc.url.character.encoding 设置的值。--character-set 选项指定字符集会覆盖 jdbc.url.character.encoding 值。该选项支持指定的 字符集 包括:binary, gbk, gb18030, utf16, utf8mb4。 |
V4.2.4 | |
| --strict | 否 | 标识导入时控制脏数据对进程结束状态的影响。 | V4.2.4 | |
| --session-config | 否 | 用于指定 连接配置 文件。 | V4.2.6 | |
| -H(--help) | 否 | 查看 OBLOADER 命令行工具的使用帮助。 |