問題描述:
將 Oracle 資料庫中所有使用者表的表結構匯出,並儲存到 Excel 表中,儲存資訊如所示:
SELECT A.TABLE_NAME,A.COMMENTS,B.COLUMN_NAME,B.COMMENTS FROM USER_TAB_COMMENTS a,USER_COL_COMMENTS b WHERE a.table_name = b.table_name
解決方案:
1) 啟動 PL/SQL ,應用需要匯出表結構的使用者登入目標資料庫執行個體
2) New-SQL window 建立查詢時段
3) 在查詢時段中輸入以下查詢語句:
select t.TABLE_NAME 表名 ,t.COLUMN_ID 序號 ,t.COLUMN_NAME 欄位名 ,t.DATA_TYPE 類型 ,t. DATA_LENGTH 長度 ,t.NULLABLE 是否為空白
from user_tab_columns t
其中 User_tab_columns 為目前使用者表結構資訊表。
4) 只想完成後,在查詢時段中點擊按鈕顯示所有記錄資訊
5) 右鍵 -copy to Excel ,將查詢資訊儲存到 Excel 中
6) 通過 Excel 中開啟儲存的查詢結果資料,選擇資料 - 篩選,選擇不同的表,然後可以取出不同表的表結構
7) 如果在查詢過程中選擇特定表的表結構則執行以下語句
select t.TABLE_NAME 表名 ,t.COLUMN_ID 序號 ,t.COLUMN_NAME 欄位名 ,t.DATA_TYPE 類型 ,t. DATA_LENGTH 長度 ,t.NULLABLE 是否為空白
from user_tab_columns t
where TABLE_NAME=’ 表名 ’
註:這裡的表名,需要查詢的表名替換,比如 User 表則寫成: where TABLE_NAME=’User’
經驗總結:
1) 資料表 User_tab_columns 中儲存了目前使用者所有資料表的表結構。
2) 資料表 all_tab_columns 中儲存了當前資料庫執行個體中所有資料表的表結構。
3) 資料表 all_tab_columns 和資料表 user_tab_columns 的區別在於表 all_tab_columns 多了一個 owner 欄位,用來儲存表所屬的使用者。
通過 PL/SQL 可以將查詢結果直接匯出到 Excel 檔案中。