2016-10-20 79 views
1

如何比較表數據結構。 1.添加或刪除任何表格。 2.添加或刪除表中的任何列。如何比較表數據結構

所以我的工作是覈實,如果任何表或列添加/每月的1日刪除。

我的計劃是運行一個SQL查詢並獲取整個表的副本,並且它只有數據類型(無數據),並將其保存在txt文件或其他東西中,並將其用作基線,並在下個月運行相同的SQL查詢並獲得結果並比較文件。可能嗎?請幫助可以完成這項工作的SQL查詢。

+1

你正在接近這個錯誤的方式。對架構定義的所有更改都應通過SQL腳本完成,該腳本需要置於版本控制之下,並且必須通過這些腳本部署更改。如果你這樣做,你不需要「比較」結構。像Liquibase或Flyway這樣的工具可以幫助你。 –

+0

好吧HORSE,我不是DBA傢伙,我知道這些傢伙是這樣做的,我現在不需要SQL腳本。我有權訪問SQL Developer,並且我不完全知道如何爲用戶「ABCD」提取表的列表以及其數據結構的查詢。我也不需要任何工具。 –

+0

只看DBA堆棧交易所DBMS_METADATA.GET_DDL –

回答

0

該查詢會給你一個給定用戶所有的表和列的列表(只需更換ABCD在此查詢,你必須審計,並提供您的用戶可以訪問所有用戶表這將工作)。

SELECT table_name, 
    column_name 
FROM all_tab_columns 
WHERE owner = 'ABCD' 
ORDER 
BY table_name, 
    column_id; 

這個回答你的問題,但我有a_horse_with_no_name這不是一個好辦法實施變更控制,最明顯的是因爲改變已經發生的同意。

這個查詢是非常基本的,並且不會給你所有你需要查看列是否已經改變的信息(或者關於其他對象類型的任何信息等),但是然後你只會詢問關於列的添加和刪除表和列,您可以將此腳本的輸出與以前的輸出進行比較,以找到分配給您的任務的答案。