Sunteți pe pagina 1din 3

SELECT COUNT(*) FROM ( (SELECT * FROM SCHEMA.TABLE1 MINUS SELECT * FROM SCHEMA.TABLE2) UNION ALL (SELECT * FROM SCHEMA.

TABLE2 MINUS SELECT * FROM SCHEMA.TABLE1) ); SELECT COUNT(*) FROM ( (SELECT T1.PRIMARYKEY, T1.COLUMN1 FROM SCHEMA.TABLE1 T1 MINUS SELECT T2.PRIMARYKEY, T2.COLUMN1 FROM SCHEMA.TABLE2 T2) UNION ALL (SELECT T3.PRIMARYKEY, T3.COLUMN1 FROM SCHEMA.TABLE2 T3 MINUS SELECT T4.PRIMARYKEY, T4.COLUMN1 FROM SCHEMA.TABLE1 T4) ); select a.column_name, a.data_type, a.data_length, a.data_scale,a.data_precision, b.column_name, b.data_type, b.data_length, b.data_scale,b.data_precision from all_tab_columns a, all_tab_columns b where a.table_name = upper(substr('&table1',instr('&table1','.')+1)) and a.owner = upper(substr('&table1',1,instr('&table1','.')-1)) and b.table_name = upper(substr('&table2',instr('&table2','.')+1)) and b.owner = upper(substr('&table2',1,instr('&table2','.')-1)) and a.column_name = b.column_name and ( a.data_type <> b.data_type or a.data_length <> b.data_length or a.data_scale <> b.data_scale or a.data_precision <> b.data_precision ); select column_name from all_tab_columns where table_name = upper(substr('&table1',instr('&table1','.')+1)) and owner = upper(substr('&table1',1,instr('&table1','.')-1)) minus select column_name --, data_type, data_length, data_scale, data_precision from all_tab_columns where table_name = upper(substr('&table2',instr('&table2','.')+1))

and owner = upper(substr('&table2',1,instr('&table2','.')-1)); select column_name --, data_type, data_length, data_scale, data_precision from all_tab_columns where table_name = upper(substr('&table2',instr('&table2','.')+1)) and owner = upper(substr('&table2',1,instr('&table2','.')-1)) minus select column_name from all_tab_columns where table_name = upper(substr('&table1',instr('&table1','.')+1)) and owner = upper(substr('&table1',1,instr('&table1','.')-1)); http://dbathoughts.blogspot.com/2008/02/compare-table-structure-in-oracle.html

SELECT column_name,column_type,is_nullable,column_key,col umn_default,extra FRO M information_schema.COLUMNS WHERE table_schema='' AND table_name='' --- SCRIPT START --Rem Rem Rem Rem set set set set script name - compare_tables.sql Table structure comparison script Can compare tables across schema's provided the user has privilege Provide table name in the format SCHEMA_NAME.TABLE_NAME verify off heading off feedback off line 100

column owner format a20 column column_name format a20 column data_type format a20 accept table1 prompt 'Table 1: ' accept table2 prompt 'Table 2: ' prompt prompt columns having same name but difference in datatype or length: prompt ------------------------------------------------------------------------column data_precision fold_after select a.column_name, a.data_type, a.data_length, a.data_scale,a.data_precision, b.column_name, b.data_type, b.data_length, b.data_scale,b.data_precision

from all_tab_columns a, all_tab_columns b where a.table_name = upper(substr('&table1',instr('&table1','.')+1)) and a.owner = upper(substr('&table1',1,instr('&table1','.')-1)) and b.table_name = upper(substr('&table2',instr('&table2','.')+1)) and b.owner = upper(substr('&table2',1,instr('&table2','.')-1)) and a.column_name = b.column_name and ( a.data_type <> b.data_type or a.data_length <> b.data_length or a.data_scale <> b.data_scale or a.data_precision <> b.data_precision ); prompt columns present in &table1 but not in &table2 prompt ---------------------------------------------select column_name from all_tab_columns where table_name = upper(substr('&table1',instr('&table1','.')+1)) and owner = upper(substr('&table1',1,instr('&table1','.')-1)) minus select column_name --, data_type, data_length, data_scale, data_precision from all_tab_columns where table_name = upper(substr('&table2',instr('&table2','.')+1)) and owner = upper(substr('&table2',1,instr('&table2','.')-1)); prompt columns present in &table2 but not in &table1 prompt ---------------------------------------------select column_name --, data_type, data_length, data_scale, data_precision from all_tab_columns where table_name = upper(substr('&table2',instr('&table2','.')+1)) and owner = upper(substr('&table2',1,instr('&table2','.')-1)) minus select column_name from all_tab_columns where table_name = upper(substr('&table1',instr('&table1','.')+1)) and owner = upper(substr('&table1',1,instr('&table1','.')-1)); --- SCRIPT END --

S-ar putea să vă placă și