记Oracle中快速获取表及其各个字段注释的方法
简述
java开发中,用过JPA的道友应该知道,我们可以通过写java代码自动生成对应的数据表;但这有个问题是,列名的注释并没有帮我们一起添加到数据库去,尤其在一些开发测试生产三个环境隔离的,就很不友好了,开发人员给开发环境挨个添加注释后却难以导到测试生产去。下面就利用Oracle的系统表整理一套方法出来。
实践
前置条件
用Oracle的XMLAGG、XMLPARSE函数及其user_tab_comments表、user_col_comments表
--获取表名注释
SELECT XMLAGG(XMLPARSE(CONTENT 'COMMENT ON TABLE ' || table_name || ' IS ''' || comments || ''';' || CHR(10) WELLFORMED) ORDER BY 1).GETCLOBVAL() as cmmm
FROM user_tab_comments
WHERE table_name in (SELECT t.TABLE_NAME FROM user_tables t where lower(t.TABLE_NAME) like '批量时这里写你的过滤条件');
--获取字段注释
SELECT XMLAGG(XMLPARSE(CONTENT 'COMMENT ON COLUMN ' || table_name || '.' || column_name || ' IS ''' || comments || ''';' || CHR(10) WELLFORMED) ORDER BY 1).GETCLOBVAL() as cmmm
FROM user_col_comments
WHERE table_name in (SELECT t.TABLE_NAME FROM user_tables t where lower(t.TABLE_NAME) like '批量时这里写你的过滤条件');
注意SQL中的CHR(10),这是Oracle的特殊换行符,这两SQL最后会得到一个CLOB类型的大文本;当然若你觉得你的注释不会有很多,你也可以用listagg代替XMLAGG函数。
相关文章
- Shell中针对字符串的切片,截取,替换,删除,大小写操作
- Python学不会来打我(8)字符串string类型深度解析
- TS类型体操,看懂你就能玩转TS了_ts l
- 你只会用 split?试试 StringTokenizer,性能可以快 4 倍
- 2025-08-22:最短匹配子字符串。用go语言,给定两个字符串 s 和 p,
- case when语句增加_case when加条件
- 一次完整的HTTP请求与响应涉及了哪些知识?
- Excel超链接点击无反应及安全提示问题
- Java 判断对象是否所有属性为空,大家觉得这样写可以吗?
- Spring事物(@transactional注解)在什么情况下会失效,为什么?