obdumper命令行为表现不统一,不符合预期要求,和文档说明不一致

【 使用环境 】测试环境
【 OBDumper】
【 使用版本 】4.3.4.3
软件名:ob-loader-dumper-4.3.4.3-RELEASE

sh bin/obdumper --version

OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
Version: 4.3.4.3-RELEASE
【问题描述】能变通使用,但部分命令的行为表现不统一,不符合预期,不符合文档描述。

问题总结:

  1. 为什么只有–DDL不支持导出
  2. 为什么有些条件下,最后了子目录不能存在? (–csv --all、–sql --all 、–csv --all --ddl),但是有的情况下确能存在(–ddl --csv --all )。 有些情况下仅仅顺利变了
  3. –all 只导出数据, 不导出表结构,和官网介绍不符

【复现路径】

sh bin/obdumper --csv --all -h1x.xx.xxx.xx -P 2883 -u @test#tan -p '’ -D sbtest -f /tidata/backupdump/data/
sh bin/obdumper --sql --all -h1x.xx.xxx.xx -P 2883 -u @test#tan -p '’ -D sbtest -f /tidata/backupdump/data/

–csv --all、–sql --all 只导出数据(官网介绍是可以导出对象定义)
https://www.oceanbase.com/docs/common-oceanbase-dumper-loader-1000000003972549
data目录( /tidata/backupdump/data/最后的子目录)不可以存在。

sh bin/obdumper --all --ddl -h1x.xx.xxx.xx -P 2883 -u @test#tan -p '’ -D sbtest -f /tidata/backupdump/data/

只导出了表结构 (不符合预期,期望数据和表结构都能导出)
data目录( /tidata/backupdump/data/最后的子目录)不可以存在。

sh bin/obdumper --ddl -h1x.xx.xxx.xx -P 2883 -u @test#tan -p '’ -D sbtest -f /tidata/backupdump/data/

独立的–ddl报错不支持 (不符合预期)
2025-12-01 20:52:46 [WARN] The Java version (1.8.0_232) you are currently using is not recommended. Recommended range: [1.8.0_300, 9.0.0)
2025-12-01 20:52:47 [ERROR] Dump failed! Error: Option --all, --table or other object options are missing
2025-12-01 20:52:47 [ERROR] System exit 1

sh bin/obdumper --ddl --csv --all -h1x.xx.xxx.xx -P 2883 -u @test#tan -p '’ -D sbtest -f /tidata/backupdump/data/
表结构和数据均导出了(符合预期)。
且data目录( /tidata/backupdump/data/最后的子目录)可以存在。

sh bin/obdumper --csv --all --ddl -h1x.xx.xxx.xx -P 2883 -u @test#tan -p '’ -D sbtest -f /tidata/backupdump/data/
表结构和数据均导出了(符合预期)。
data目录( /tidata/backupdump/data/最后的子目录)不可以存在。

2025-12-01 20:56:42 [WARN] The Java version (1.8.0_232) you are currently using is not recommended. Recommended range: [1.8.0_300, 9.0.0)
2025-12-01 20:56:43 [ERROR] Dump failed! Error: The output directory is not empty. Consider add cli option --skip-check-dir to overwrite.
2025-12-01 20:56:43 [ERROR] System exit 1

1.–ddl,–csv等需要指定–table或者–all来指定导出的对象。–table可以指定导出哪些表,如果指定–ddl就是导出表结构,–csv则导出数据。–all 可以导出库中的所有对象(视图,用户等),如果指定–ddl导出数据库对象,如果指定–csv导库中所有表的数据。

  1. Dump failed! Error: The output directory is not empty. Consider add cli option --skip-check-dir to overwrite。这个问题是因为已经执行列一次导出,导出目录里面有数据了,需要添加–skip-check-dir跳过检查数据的导出目录是否为空。第一次导出不会有问题,后面导出就会有,和这些条件没有关系。

3.如果需要导出数据和表结构是要指定 --csv 和 --ddl,–ddl 表示导出所有的数据库对象定义,–csv表示导出csv格式的数据文件。

我明确说了我有变通的方式解决,是对这个命令的行为有疑问,你没有直接回答任何一个问题。

  1. 我的问题是–ddl 为什么不能单独使用。
  2. 目录下肯定是空的,我现在的问题我写在-f里的最后一级子目录,该不该有,不同的情况下表现不一样。
    3.我的问题是–all的问题

我个人看法是这个产品要么设计有问题,要么就是有bug。

是说的有问题么?可以仔细看看解释 是需要配合使用的 看着是你配合使用的有问题
1、–ddl,–csv等需要指定–table或者–all来指定导出的对象
2. Dump failed! Error: The output directory is not empty. Consider add cli option --skip-check-dir to overwrite。这个问题是因为已经执行列一次导出,导出目录里面有数据了,需要添加–skip-check-dir跳过检查数据的导出目录是否为空。第一次导出不会有问题,后面导出就会有,和这些条件没有关系。
3、–all 可以导出库中的所有对象(视图,用户等),如果指定–ddl导出数据库对象,如果指定–csv导库中所有表的数据。