在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