表列表(在DB2、SQL Server、Informix和Oracle中)
我需要编写代码来了解有关几个数据库的一些信息。这将是我们的客户谁将执行代码,所以我将无法调整它“在线”。 数据库将是Oracle(9、10、11)、DB2、AS400DB2、Informix和MS SQL(2000和2008)。 我编写了Oracle所需的代码,但对其他数据库一无所知。你能帮我把它复制到其他数据库吗? 非常感谢 一, 二, 三, 四, 你有一些选择表列表(在DB2、SQL Server、Informix和Oracle中),sql,oracle,db2,ibm-midrange,informix,Sql,Oracle,Db2,Ibm Midrange,Informix,我需要编写代码来了解有关几个数据库的一些信息。这将是我们的客户谁将执行代码,所以我将无法调整它“在线”。 数据库将是Oracle(9、10、11)、DB2、AS400DB2、Informix和MS SQL(2000和2008)。 我编写了Oracle所需的代码,但对其他数据库一无所知。你能帮我把它复制到其他数据库吗? 非常感谢 一, 二, 三, 四, 你有一些选择 使用ODBC或JDBC等技术,您可以使用其API读取此类信息。如果使用JDBC,则有数据库元数据: 您可以通过SQL查询数据库提供
数据库元数据:
SELECT tabname
FROM systables
WHERE tabtype='T'
AND tabid >= 100
AND tabname[1] <> '_'
ORDER BY tabname
选择tabname
来自systables
tabtype='T'
并且tabid>=100
和tabname[1]''
按选项卡名排序
查看信息\u SCHEMA。您使用的是什么API?如果您支持到许多不同数据库的连接,那么很可能是使用跨平台API连接到数据库。如果是这种情况,API(ODBC、JDBC、OLEDB、ODP.Net等)将提供执行此操作的函数,而不是编写特定于每个数据库的SQL。
select atc.owner, atc.data_type, count(*) --number of tables by schemes and datatypes
from all_tab_columns atc
inner join all_tables t
on t.OWNER = atc.OWNER
and t.TABLE_NAME = atc.TABLE_NAME
where atc.owner not in ('SYS', 'SYSTEM', 'SYSMAN')
and t.temporary = 'N'
group by atc.owner, atc.data_type
select atcom.owner, count(*) --number of comments by schemes
from all_tab_comments atcom
inner join all_tables t
on t.OWNER = atcom.OWNER
and t.TABLE_NAME = atcom.TABLE_NAME
where atcom.comments is not null
and atcom.owner not in ('SYS', 'SYSTEM', 'SYSMAN')
group by atcom.owner
select owner, constraint_type, count(*) --number of constraints by schemes and types
from all_constraints ac
where status = 'ENABLED' and owner not in ('SYS', 'SYSTEM', 'SYSMAN')
group by owner, constraint_type
SELECT tabname
FROM systables
WHERE tabtype='T'
AND tabid >= 100
AND tabname[1] <> '_'
ORDER BY tabname