obloader导入csv,配置表名大小写差异

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

针对obloader导入csv数据是,命令行参考下面
./obloader -h xxxxxx.1 -P2881 -u root -p’ ’ -Dob --table ‘da_sale’ --csv -f ‘output’

在数据库创建表的时候,默认表名大写DA_SALE这种,查询不区分大小写,obloader配置中给–table’TABLE’无法识别,导致报错表不存在
目前测试只有创建表的时候表名称小写,obloader导入才能识别到表是否存在,是否有兼容避免创建表的时候表大写,无法导入的情况

根据文档库中的信息,obloader 工具在导入 CSV 文件时确实存在对表名大小写敏感的问题。以下是详细的解决方案:

  1. 表名大小写敏感性

    • 在 OceanBase 数据库中,表名默认是大小写不敏感的,但是表名会被转换为大写存储。因此,如果你在创建表时使用的是大写的表名(如 DA_SALE),那么在使用 obloader 导入数据时,需要确保表名也是大写的。
    • 如果你在创建表时使用的是小写的表名(如 da_sale),那么在使用 obloader 导入数据时,需要确保表名也是小写的。
  2. 解决方案

    • 方案一:创建表时使用小写表名

      • 在创建表时,使用小写的表名(如 da_sale)。这样在使用 obloader 导入数据时,可以直接使用小写的表名。
      CREATE TABLE da_sale (
        id INT PRIMARY KEY,
        name VARCHAR(100),
        sale_date DATE
      );
      
      • 使用 obloader 导入数据时,命令行中指定小写的表名:
      ./obloader -h xxxxxx.1 -P2881 -u root -p'   ' -D ob --table 'da_sale' --csv -f 'output'
      
    • 方案二:使用双引号强制大小写

      • 在创建表时,使用双引号强制表名的大小写。例如,创建一个大写的表名 DA_SALE
      CREATE TABLE "DA_SALE" (
        id INT PRIMARY KEY,
        name VARCHAR(100),
        sale_date DATE
      );
      
      • 使用 obloader 导入数据时,命令行中指定带双引号的大写表名:
      ./obloader -h xxxxxx.1 -P2881 -u root -p'   ' -D ob --table '"DA_SALE"' --csv -f 'output'
      
  3. 注意事项

    • 使用双引号强制大小写时,表名在后续的 SQL 查询中也需要使用双引号,并且大小写必须一致。
    • 如果你已经创建了表并且表名是大写的,建议使用方案二来解决 obloader 导入数据时的表名识别问题。

通过以上方案,你可以避免因表名大小写不一致而导致的 obloader 导入失败问题。希望这些建议对你有所帮助。如果有其他问题,请随时联系 OceanBase 的技术支持团队。

具体信息可参考以下文档:

  1. 使用 OceanBase 导数工具从 OceanBase 集群 Oracle 租户迁移数据到 MySQL 租户
  2. 使用 OceanBase 导数工具在 OceanBase 集群 MySQL 租户间迁移数据
  3. obloader/obdumper
  4. 使用 LOAD DATA 语句导入数据
  5. 使用 OUTFILE 语句导出数据
  6. log_archive_concurrency
  7. 4000 ~ 4499
  8. 5000 ~ 5999
  9. log_restore_concurrency