【问题标题】:How to find schema of a table in DB2?如何在 DB2 中查找表的模式?
【发布时间】:2015-08-17 11:49:22
【问题描述】:

我是 DB2 新手,我在数据库“WLADMIN”下创建了两个表“PROJECT_ADAPTERS”和“PROJECT_APPLICATIONS”

我可以使用“syscat.tables”查看表格,如下所示

[db2inst1@574 ~]$ db2 "select TABNAME from syscat.tables" | grep PROJ
PROJECT_ADAPTERS                                                           
PROJECT_APPLICATIONS                                                          

但是我不确定它属于哪个模式?

我尝试编写一个循环遍历所有“模式”的小脚本

schemaname=$(db2 -v select schemaname from syscat.schemata)

for each_schema in $schemaname
do
    db2 list tables for schema $each_schema | grep PROJ
done

但是,我的表“PROJECT_ADAPTERS”和“PROJECT_APPLICATIONS”没有针对任何架构显示

我做错了什么(或)我还应该注意哪些地方?

请帮我解决这个问题

【问题讨论】:

    标签: db2 database-administration


    【解决方案1】:

    大多数表格都有多个列,您可以使用它们... ;)

    select tabname,tabschema from syscat.tables where tabname like 'PROJECT%' 应该显示您的表和架构名称。

    目录SYSCAT.TABLES 已完整记录。

    【讨论】:

    • db2 "select tabname,tabschema from syscat.tables where tabname like 'PROJECT%'" 将'PROJECT_ADAPTERS'模式生成为'cls'。但是,当我输入“db2 select * from cls.PROJECT_LOCK”时,它说“CLS.PROJECT_LOCK”是一个未定义的名称。SQLSTATE=42704
    • PROJECT_LOCK 报告的架构是什么?它是否已定义?您只是说您可以看到 PROJECT_ADAPTERS 的条目。
    • 表 PROJECT_ADAPTERS 和 PROJECT_LOCK 都属于模式“CLS”。但是,我没有为模式“定义”。请让我知道如何检查架构是否已定义,如果未定义如何定义架构?
    • @SathishKumar 如果查询将模式名称返回为“cls”而不是“CLS”(大小写很重要),那么您必须将模式名称用双引号括起来,如select * from "cls".project_lock。这将在尝试从命令行查询时产生挑战,您必须处理解释引号的 shell。示例:db2 "select * from \"cls\".project_lock"
    • @Ian 你提供的语法就像一个魅力。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多