如何在DBeaver中让Oracle数据库的RAW16列自动显示为小写UUID
解决DBeaver批量将Oracle RAW16列解析为小写UUID格式的问题
方法一:全局数据类型格式化(推荐,一次性生效所有RAW16列)
这个方法通过配置DBeaver的全局格式化规则,让所有Oracle连接中的RAW(16)列自动转换为小写UUID格式:
- 打开DBeaver的设置面板:
- Windows/Linux:
文件→设置 - macOS:
DBeaver→偏好设置
- Windows/Linux:
- 导航到
数据库→数据格式化→类型格式化 - 在左侧数据库类型列表中选择
Oracle,右侧找到RAW类型(RAW(16)会继承该类型的规则) - 点击
自定义表达式,输入以下格式化脚本:lower(concat(substr(value, 1, 8), '-', substr(value, 9, 4), '-', substr(value, 13, 4), '-', substr(value, 17, 4), '-', substr(value, 21))) - 点击
应用→确定,重启DBeaver后所有RAW(16)列会自动显示为小写UUID格式。
注意:如果存在非UUID用途的RAW(16)列,该规则会同时影响它们,若需区分可使用方法二。
方法二:创建DBeaver本地虚拟视图(针对特定表/列,不影响全局)
由于你只有只读权限,无法创建数据库视图,但可以用DBeaver的虚拟视图(本地存储,无需数据库权限)来批量处理:
- 首先查询所有RAW(16)列的信息,执行以下SQL:
SELECT owner, table_name, column_name FROM all_tab_columns WHERE data_type = 'RAW' AND data_length = 16; - 根据查询结果批量生成创建虚拟视图的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}; - 将脚本中的占位符替换为实际的库、表、列名,在DBeaver中执行脚本创建虚拟视图,之后通过这些视图即可查看格式化后的UUID。
补充说明
- 方法一的格式化脚本逻辑:将DBeaver默认显示的大写十六进制字符串转小写,再按UUID的8-4-4-4-12分段规则插入分隔符。
- 方法二的Oracle函数逻辑:
RAWTOHEX将RAW类型转为十六进制字符串,REGEXP_REPLACE添加UUID分隔符,LOWER转为小写。
内容的提问来源于stack exchange,提问作者Petersaber
相关产品推荐
相关产品推荐

