oracle两库表及表结构是一致的,因为a表经常改字段,a表改后b表表结构必须要求一致,所以现在应如何根据系统自带的user_tables等表将a,b两库做对比,要 根据a表的字段,字段类型,字段长度,注释,以及只对比创建时间为前一天到今天的内容, 用sql做个定时任务,每天晚上定时对比,利用sql语言新增或修改b表的字段,定时自己更新怎么做,定时可以用kttle做定时
时间: 2024-03-15 14:44:20 浏览: 60
可以使用以下SQL语句来对比a表和b表的结构,并将差异同步到b表中:
```
DECLARE
v_sql VARCHAR2(1000);
BEGIN
FOR a_col IN (
SELECT column_name, data_type, data_length, comments
FROM user_col_comments
WHERE table_name = 'A'
MINUS
SELECT column_name, data_type, data_length, comments
FROM user_col_comments
WHERE table_name = 'B'
) LOOP
v_sql := 'ALTER TABLE B ADD (' || a_col.column_name || ' ' || a_col.data_type || '(' || a_col.data_length || ')' || ')';
EXECUTE IMMEDIATE v_sql;
v_sql := 'COMMENT ON COLUMN B.' || a_col.column_name || ' IS ''' || a_col.comments || '''';
EXECUTE IMMEDIATE v_sql;
END LOOP;
END;
```
这个脚本会比较a表和b表的字段、类型、长度和注释,并将差异同步到b表中。你可以将这个脚本保存为一个存储过程,然后使用Oracle的定时任务来定期运行它。另外,你也可以使用kettle等ETL工具来定时运行这个脚本。
阅读全文