DB2 Query检索给定模式的所有表名

Ben*_*Ben 39 sql db2 database-schema

我只是在寻找一个简单的查询来选择给定模式的所有表名.

例如,我们的DB有超过100个表,我需要找到包含子字符串"CUR"的任何表.拥有所有表后,我可以使用like命令.

pax*_*blo 70

select * from sysibm.systables
where owner = 'SCHEMA'
and name like '%CUR%'
and type = 'T';
Run Code Online (Sandbox Code Playgroud)

这将为您提供架构CUR中的所有表SCHEMA.

有关该表的更多详细信息,请参见此处SYSIBM.SYSTABLES.如果您查看左侧的导航窗格,您可以获得各种精彩的DB2元数据.

请注意,此链接适用于大型机DB2/z.DB2/LUW(Linux/UNIX/Windows one)的列略有不同.为此,我相信你想要CREATOR专栏.

在任何情况下,您都应该检查特定变体的IBM文档.表名几乎肯定不会改变,所以只需查看SYSIBM.SYSTABLES详细信息.

  • @Marius,您的DB2变体中可能有不同的模式 - 这是特定于DB2/z,我们想要调用_real_ DB2 :-)例如,在DB2/LUW中,您将使用CREATOR.它不会改变底层答案,即使用`systables`. (7认同)
  • `SQL0206N"OWNER"在使用它的上下文中无效.SQLSTATE = 42703` (3认同)

小智 27

DB2 LIST TABLES FOR SCHEMA <schema_name>
Run Code Online (Sandbox Code Playgroud)


Ber*_*ert 21

在我的iSeries上,我必须从iNavigator运行此命令:

select *
from QSYS2.SYSTABLES
where TABLE_SCHEMA
like 'SCHEMA_NAME'
and TYPE = 'T';
Run Code Online (Sandbox Code Playgroud)


小智 11

你应该试试这个:

select TABNAME from syscat.tables where tabschema = 'yourschemaname'";
Run Code Online (Sandbox Code Playgroud)


sch*_*iti 7

使用DB2命令(无SQL)可以执行

db2 LIST TABLES FOR ALL
Run Code Online (Sandbox Code Playgroud)

这显示了数据库中所有模式中的所有表.

ref:使用LIST命令显示DB2中的所有表

  • 如果您不知道要查找的模式,或者想要将数据库中所有表的列表转储到文件中,这非常方便.所有"> tables.txt"的"db2"列表 (4认同)

Pau*_*non 7

对于Db2 for Linux、Unix 和 Windows(即 Db2 LUW)或Db2 Warehouse,请使用SYSCAT.TABLES目录视图。例如

SELECT TABSCHEMA, TABNAME FROM SYSCAT.TABLES WHERE TABSCHEMA LIKE '%CUR%' AND TYPE = 'T'
Run Code Online (Sandbox Code Playgroud)

这是一条 SQL 语句,它将返回包含 substring 的所有模式中的所有标准CUR。从 Db2 命令行,您还可以使用 CLP 命令,例如db2 list tables for all | grep CUR达到类似效果

页面描述了SYSCAT.TABLES中的列,包括该列的不同值TYPE

A = Alias
G = Created temporary table
H = Hierarchy table
L = Detached table
N = Nickname
S = Materialized query table
T = Table (untyped)
U = Typed table
V = View (untyped)
W = Typed view
Run Code Online (Sandbox Code Playgroud)

其他常用的目录视图包括

SYSCAT.COLUMNS      Lists the columns in each table, view and nickname
SYSCAT.VIEWS        Full SQL text for view and materialized query tables
SYSCAT.KEYCOLUSE    Column that are in PK, FK or Uniuqe constraints
Run Code Online (Sandbox Code Playgroud)

在 Db2 LUW 中,使用SYSIBM目录表(SYSCAT目录视图从中选择数据)被认为是不好的做法。就列名而言,它们不太一致,不太容易使用,没有记录,并且更可能在版本之间发生变化。

此页面包含所有目录视图的列表 目录视图的路线图


对于Db2 for z/OS,请使用此处SYSIBM.TABLES描述的。例如

SELECT CREATOR, NAME FROM SYSIBM.SYSTABLES WHERE OWNER LIKE '%CUR%' AND TYPE = 'T'
Run Code Online (Sandbox Code Playgroud)

对于Db2 for i(即 iSeries aka AS/400)使用QSYS2.SYSTABLES此处描述

SELECT TABLE_OWNER, TABLE_NAME FROM QSYS2.SYSTABLES WHERE TABLE_SCHEMA LIKE '%CUR%' AND TABLE_TYPE = 'T'
Run Code Online (Sandbox Code Playgroud)

对于DB2 Server for VSE 和 VM 的使用SYSTEM.SYSCATALOG,此处描述了DB2 Server for VSE 和 VM SQL 参考

SELECT CREATOR, TNAME FROM SYSTEM.SYSCATALOG WHERE TABLETYPE = 'R'
Run Code Online (Sandbox Code Playgroud)