在Oracle 10g中工作。簡單的方法來列出所有的表名(從dba_tables中選擇table_name,其中owner ='me') 但是現在我有了表名,是否有一種簡單的方法可以循環遍歷它們並按順序對每個表進行「描述」?表名和循環描述
表名和循環描述
回答
您可以針對DBA_TAB_COLUMNS(或USER_TAB_COLUMNS)進行查詢。
Nicolas。
並確保對它們進行適當的排序(on COLUMN_ID),否則這些列看起來不像您期望的那樣。 – MJB 2010-06-17 14:37:15
不確定你可以在PL/SQL中做一個描述。我剛剛嘗試使用execute immediate 'describe some_table'
,這也不起作用。您的下一個選擇是查詢DBA_TAB_COLUMNS,或使用所有描述語句(使用來自pl/sql和spool的dbms_output創建文件)創建一個新文件,然後執行該文件。也許是這樣的:
spool temp_file.sql
BEGIN
/*or you could have a loop here with as many put_lines as you need, it will all end up in the new script file.*/
dbms_output.put_line('describe some_table');
END;
/
spool off
@temp_file.sql
/*I have not actually tried running this code, beware syntax errors!*/
你不能從PL/SQL做到 - 你是對的。這是因爲「描述」,比如「set」,「copy」和其他一些命令,實際上是一個SQLPlus命令,而不是SQL語句。所以在這個環境之外,你不能執行它。你可以告訴,因爲它不需要執行終端分號。 SQL語句(無論它們是DML還是DDL)都需要分號或一些終止字符,而不是[Enter]發送到數據庫。 – MJB 2010-06-17 15:18:20
我建議你查詢DBA_TAB_COLUMNS,如N. Gasparotto建議,但如果你真的想描述的輸出,然後創建一個文件多功能使用,describe.sql下列要求:
set pagesize 0
set termout off
set feedback off
set verify off
spool mdtmp.sql
select 'describe ' || owner || '.' || table_name
from dba_tables
where OWNER = upper('&1')
/
spool off
set termout on
@mdtmp.sql
在SQL * PLUS的運行:
@multi-describe ME
不錯,這是正確的答案 – 2010-06-17 22:23:51
可以在PL/SQL中使用DBMS_METADATA.GET_DDL做到這一點,例如, (從文檔所採取的示例):
SET LONG 2000000
SET PAGESIZE 0
SELECT DBMS_METADATA.GET_DDL('TABLE','EMP','SCOTT') FROM DUAL;
登錄與用戶和然後運行下面的命令,第一個文件將包含描述的命令和所述第二文件是一個包含所有的所有描述的所需的文件用於記錄表中用戶
spool desctables.sql select 'describe '||table_name||';' from user_tables; spool off spool alltables.txt @desctables.sql spool off
這對我來說很好,我確實遇到了一些問題,首先命令行太長了(我有500個表),所以我把它分成了100個批次,接下來我必須刪除在頂部和底部的「命令>」,最後我不得不刪除包裝每個描述語句的「< " and " >」(我可能應該關掉它)。謝謝! – JGlass 2017-09-28 22:34:24
- 1. 全局描述符表和局部描述符表
- 2. AWS CLI:AWS EC2描述圖像:循環和文件
- 3. 循環遍歷Magento類別,Meta關鍵字和描述
- 4. NSObject描述和調試描述
- 5. Java掃描儀和循環
- 6. preg_match_all項目名稱和描述
- 7. Salesforce SOQL描述表
- 8. 描述表結構
- 9. 結果表描述
- 10. META描述和Facebook
- 11. 描述構建變量名
- 12. 簽名的HOG描述符
- 13. 循環(名稱)表
- 14. 如何顯示jmx MBean的類描述,屬性描述和操作描述
- 15. C掃描循環
- 16. 循環掃描儀
- 17. 打開()不打開for循環中的文件描述符
- 18. 困難的WordPress循環,不容易描述
- 19. 無法循環過濾器描述符正確TelerikUi
- 20. Linux文件描述符表和vmalloc
- 21. 如果陳述和while循環
- 22. 循環遍歷Python中的正則表達式描述的有限語言
- 23. for循環輸出格式:添加帶描述和空格的換行
- 24. For循環和while循環跳過掃描儀
- 25. 如何獲取描述列表的值,以及DOMXPath中的術語和描述?
- 26. 使用P4描述從perforce獲取更改列表的作者和描述
- 27. 描述
- 28. 在所有表中搜索列描述描述元
- 29. pg_query顯示/描述表
- 30. 描述一個連接表
更容易做到 「選擇USER_TABLES TABLE_NAME;」而不是用where子句查詢dba_tables。 – MJB 2010-06-17 14:35:11
可能重複的[用oracle(.Net連接器)描述查詢](http://stackoverflow.com/questions/867731/describe-query-with-oracle-net-connector) – DCookie 2010-06-17 15:04:36