想知道是否有人可以帮助我在这个挑战中找到正确的方向,或者告诉我我很想通过 sql 尝试这个。如果 sql 太具有挑战性,是否有任何免费或廉价的工具可以帮助我自动化执行此操作?
我正在测试新旧 Oracle 数据库之间的一些数据。我想做的是能够为模式中的所有表动态生成此查询。
Select Column_1, Column_2 FROM Table_1
MINUS
Select Column_1, Column_2 FROM Table_1@"OLD_SERVER"
一个问题是为每个表选择的列只能是不以“ETL”开头的列,因为这些列预计会随着迁移而改变。
为了保持这种动态,我可以使用 all_tab_columns 循环遍历每个表吗?
因此,作为一个简化的示例,假设此查询返回以下结果,并且您可以预期 ALL_TAB_COLUMNS 的结果在旧数据库和新数据库之间是相同的:
select TABLE_NAME, COLUMN_NAME from ALL_TAB_COLUMNS where owner = 'OWNER1'
TABLE_NAME, COLUMN_NAME
-----------------------
TABLE1, COLUMN_1
TABLE1, COLUMN_2
TABLE1, ETLCOLUMN_3
TABLE2, COLUMN_A
TABLE2, COLUMN_B
TABLE2, ETLCOLUMN_C
我将如何编写一个查询,在新旧数据库上的相同表和列(不以 ETL 开头)之间运行减号,并输出结果以及表名和运行日期,然后循环到下一张桌子做同样的事情?