如何以通用方式检查Oracle,Teradata,SQL Server,DB2等数据库中是否存在表。
选项1:
Select 1 from Table;
选项2:
Describe Table;
哪一个更好还是还有其他更好的方式?
修改:所有这些数据库都不支持select 1 from Table
&检查存在的通用方法?
答案 0 :(得分:4)
简单回答:不是一种完成您要求的方式。不同的RDBMS以不同的方式表示模式,表,权限和数据字典。
更大的答案:提出问题的实体需要知道它所查询的RDBMS。然后可以为所讨论的数据库系统形成表存在问题。即使有这些信息,@ dat_hinrik也是正确的,权限可能会阻止您查看现有表。
答案 1 :(得分:0)
这适用于SQL Server& MySQL的
select *
from INFORMATION_SCHEMA.TABLES
where TABLE_NAME = 'Table'
不支持:Oracle
答案 2 :(得分:0)
使用JDBC的通用方式:
Connection conn;
<...connect here...>
try {
conn.createStatement().executeQuery("select * from " + table_name + " where 1=0");
} catch (Exeception e) {
System.out.println("ERROR: " + e.toString());
}
答案 3 :(得分:-1)
在Oracle中,有user_tables视图来检查用户模式中存在的所有表。存在于用户模式中的表的all_tables视图加上当前用户对其他模式的表具有选择权限的表。 dba_tables包含数据库中的所有表。
xxxx