使用obloader导入SQL文件到OB报错

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
obloader
【 使用版本 】
v4.2.5
【问题描述】
使用obloader导入SQL文件到OB,数据一直导入不成功

导入命令:
./obloader -h 10.xx.xx.xx -P 2883 -u root@xxx -p -D xxx_db --sql --all -f /data/xxx/xxx/

日志内容:
2023-10-12 14:04:06 [INFO] File: “/data/xxx/xxx/xxxx1.sql” is not contained, ignore it
2023-10-12 14:04:06 [INFO] File: “/data/xxx/xxx/xxxx2.sql” is not contained, ignore it

2023-10-12 14:04:06 [INFO] Find 0 resources in local path: “/data/xxx/xxx/” success. Elapsed: 204.5 ms
2023-10-12 14:04:06 [INFO] Split 0 data files to 0 subfiles by 64.0 MB success. Elapsed: 4.330 ms
2023-10-12 14:04:06 [WARN] No subfiles are generated from path: /data/xxx/xxx/data
2023-10-12 14:04:06 [INFO] System exit 0

【复现路径】问题出现前后相关操作
【问题现象及影响】

【附件】

根据这条日志:
2023-10-12 14:04:06 [INFO] Find 0 resources in local path: “/data/xxx/xxx/” success. Elapsed: 204.5 ms 可知程序并未找到应该导入的文件。

在不显式指定 ‘-f’ 为具体文件路径时(在该 case 中,-f 为目录),obloader 将通过文件名规则匹配的方式检索并绑定文件,即构建一个 table → file 的映射,匹配规则为 <表名>.sql。在此 case 中,由于指定了 --all 且 -f 为一个目录,所以上述映射显然是多对多的,且文件名命名不符合 obloader 的匹配规则,以致无法导入。

导入单表场景下(即 --table <表名> 用法),obloader 提供了 --file-regular-expression 选项,用于指定正则表达式来匹配表名。

解决方案:
step1. 将 --all 改为 --table <表名>,以此来逐表导入。
step2 将 -f 指定为具体文件的路径。或者,-f 仍指定为目录路径,但通过 --file-regular-expression 指定需导入文件名的正则匹配规则。

你好,修改成./obloader -h 10.xx.xx.xx -P 2883 -u root@xxx -p -D xxx_db --sql --table ‘table_name’ -f /data/xxx/xxx/ 这种也是同样的问题

目录下的文件是通过mysqldumper导出来的,格式为:
dbname.table_name.0000005670000.sql
dbname.table_name.0000005680000.sql
dbname.table_name.0000005690000.sql
dbname.table_name.0000005700000.sql
dbname.table_name.0000005710000.sql
dbname.table_name.0000005720000.sql
dbname.table_name.0000005730000.sql
dbname.table_name.0000005740000.sql
dbname.table_name.0000005750000.sql

-f 仍指定为目录,那就是一张表对应对应多个文件,请参考上述 step2,通过 --file-regular-expression 来过滤需要导入的文件哈。