You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DBeaver中让Oracle数据库的RAW16列自动显示为小写UUID

解决DBeaver批量将Oracle RAW16列解析为小写UUID格式的问题

方法一:全局数据类型格式化(推荐,一次性生效所有RAW16列)

这个方法通过配置DBeaver的全局格式化规则,让所有Oracle连接中的RAW(16)列自动转换为小写UUID格式:

  1. 打开DBeaver的设置面板:
    • Windows/Linux:文件 → 设置
    • macOS:DBeaver → 偏好设置
  2. 导航到 数据库 → 数据格式化 → 类型格式化
  3. 在左侧数据库类型列表中选择Oracle,右侧找到RAW类型(RAW(16)会继承该类型的规则)
  4. 点击自定义表达式,输入以下格式化脚本:
    lower(concat(substr(value, 1, 8), '-', substr(value, 9, 4), '-', substr(value, 13, 4), '-', substr(value, 17, 4), '-', substr(value, 21)))
    
  5. 点击应用→确定,重启DBeaver后所有RAW(16)列会自动显示为小写UUID格式。

注意:如果存在非UUID用途的RAW(16)列,该规则会同时影响它们,若需区分可使用方法二。

方法二:创建DBeaver本地虚拟视图(针对特定表/列,不影响全局)

由于你只有只读权限,无法创建数据库视图,但可以用DBeaver的虚拟视图(本地存储,无需数据库权限)来批量处理:

  1. 首先查询所有RAW(16)列的信息,执行以下SQL:
    SELECT owner, table_name, column_name
    FROM all_tab_columns
    WHERE data_type = 'RAW' AND data_length = 16;
    
  2. 根据查询结果批量生成创建虚拟视图的SQL脚本,示例模板:
    CREATE VIRTUAL VIEW {owner}_{table_name}_uuid_view AS
    SELECT 
      -- 替换为表中其他需要显示的列,或用*代替所有列(但需调整UUID列的位置)
      col1, col2,
      LOWER(REGEXP_REPLACE(RAWTOHEX({column_name}), '([0-9A-F]{8})([0-9A-F]{4})([0-9A-F]{4})([0-9A-F]{4})([0-9A-F]{12})', '\1-\2-\3-\4-\5')) AS {column_name}_uuid
    FROM {owner}.{table_name};
    
  3. 将脚本中的占位符替换为实际的库、表、列名,在DBeaver中执行脚本创建虚拟视图,之后通过这些视图即可查看格式化后的UUID。

补充说明

  • 方法一的格式化脚本逻辑:将DBeaver默认显示的大写十六进制字符串转小写,再按UUID的8-4-4-4-12分段规则插入分隔符。
  • 方法二的Oracle函数逻辑:RAWTOHEX将RAW类型转为十六进制字符串,REGEXP_REPLACE添加UUID分隔符,LOWER转为小写。

内容的提问来源于stack exchange,提问作者Petersaber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 07:15:29