暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 部分表核心列信息查看与处理

济南小老虎 2023-05-15
61

背景

最近想对数据库表进行跨数据之间的比照
因为有一些自增列或者是时间戳的列不需要进行对比
后者是对比容易导致失真.
所以就准备选用其他方式进行一下处理.

本文主要是简单记录一下生成SQL的办法.


获取必要列作为select 的字段

SELECT
LISTAGG ( COLUMN_NAME, ',' )
FROM
user_tab_cols
WHERE
table_name = upper( 'Sometable' )
AND column_name NOT LIKE '%TIME%'
AND column_name NOT LIKE '%_PT'
AND column_name NOT LIKE '%_CHT'
AND column_name NOT LIKE '%_ES'
AND column_name NOT LIKE '%_EN'
AND column_name NOT LIKE '%DATE'
ORDER BY
COLUMN_NAME ASC


SQL解释

使用LISTAGG的语法进行 行转列.
Oracle自动将最后一个 , 逗号进行了shrink
然后将列名里面不需要对比的进行一下过滤.
将列罗列出来.


拼接对比使用的获取SQL

select SQL1的结果集 From  Sometable where timestamp > sysdate -1 order by 1 
# 解释
将第一步SQL结果集拿过来. 然后可以进行适当的处理和删减.
如果有其他异常列可以去掉 有需要添加的可以手工添加.
如果增加了需要同步的列 建议也定期进行维护.

设置仅查询最近24小时的数据.
这个列不同表不一样, 也需要单独进行设置.

设置数据库排序, 避免python排序 影响性能.


结果验证

直接使用SQL2的SQL进行查询结果的验证. 

根据得出的结果进行判断.
务必进行自定修改.
保证数据准确.


文章转载自济南小老虎,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论