AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 102744
Accepted
Justin Dearing
Justin Dearing
Asked: 2015-05-29 21:01:00 +0800 CST2015-05-29 21:01:00 +0800 CST 2015-05-29 21:01:00 +0800 CST

从 V5R3M0 上的信息架构中选择 *

  • 772

我可以访问客户的 V7R1 AS/400,并且可以运行类似SELECT NAME FROM INFORMATION_SCEMA.TABLES和

SELECT 
    COLUMN_NAME, 
    DATA_TYPE, 
    TYPE_NAME, 
    COLUMN_SIZE, 
    COLUMN_TEXT
FROM "SYSIBM"."SQLCOLUMNS"
WHERE
    TABLE_SCHEM = 'MYLIB' 
    AND TABLE_NAME = 'SOMEPF'

就好了。我是该系统的 QSECOFR 1。

但是,在PUB1.DE上运行 V5R3M0 的免费绿屏帐户上,我无法从 STRSQL 或 QSH 内的 db2 命令运行该命令。我尝试了另一种我见过的 INFORMATION_SCHEMA/TABLES 格式。我从 STRSQL 收到以下错误:

> SELECT name FROM INFORMATION_SCHEMA/TABLES
  TABLES in QSYS2 type *FILE not found.     
> SELECT name FROM INFORMATION_SCHEMA.TABLES
  Qualified object name TABLES not valid.   

这是权限问题,V5 和 V7 之间的语法差异还是其他什么?


1 - 操作系统安全官用户配置文件
db2 information-schema
  • 2 2 个回答
  • 13717 Views

2 个回答

  • Voted
  1. Best Answer
    WarrenT
    2015-06-02T15:23:26+08:002015-06-02T15:23:26+08:00

    您正在体验“系统命名约定”和“SQL 命名约定”模式之间的差异。最初,系统命名模式/在限定模式名称时需要斜杠字符作为分隔符,而 SQL 命名模式使用句.点分隔符。v7.1 的更新现在允许在使用系统命名时使用任一分隔符。V5R3 不再受支持,也不再更新。在绿屏会话中,您可以指定STRSQL NAMING(*SYS). 或者在您的 JDBC/ODBC 连接字符串设置上指定系统命名约定。

    两种模式之间还有其他功能差异。见这里和这里。其中最主要的是系统命名模式允许使用库列表,只要您不指定 CURRENT SCHEMA。CHGCURLIB但是您可以使用CL 中的命令或 SQL 中的命令指定当前库CALL QCMDEXC('CHGCURLIB MYLIB',15)(其中 15 是此示例命令的长度)

    DB2 for i 目录视图可以在 QSYS2 中找到。

    SELECT COLNO
          ,SYSTEM_COLUMN_NAME   
          ,DATA_TYPE 
          ,coalesce(PRECISION,LENGTH)        as len
          ,smallint(SCALE)                   as dp
          ,STORAGE                           as bytes
          ,varchar(COLUMN_TEXT,50)           as fldtext  
          ,varchar(substr(LABEL, 1,20),20)   as hdg1
          ,varchar(substr(LABEL,21,20),20)   as hdg2
          ,varchar(substr(LABEL,41,20),20)   as hdg2
          ,CCSID
          ,IS_NULLABLE
    FROM QSYS2/SYSCOLUMNS
    WHERE SYSTEM_TABLE_SCHEMA = 'MYLIB' 
      AND SYSTEM_TABLE_NAME   = 'SOMEPF'
    

    大多数 IBM i 商店使用 10 个字符的名称(操作系统规则)并且通常不使用 DB2 允许的 128 个字符的名称,因此通常 SYSTEM_COLUMN_NAME、SYSTEM_TABLE_NAME 和 SYSTEM_SCHEMA_NAME 就足够了。

    正如Dave Jones所提到的, V5R3 SQL Reference 以 PDF 格式提供。

    • 3
  2. Dave Jones
    2015-05-30T13:28:32+08:002015-05-30T13:28:32+08:00

    我不是 DB2 for iSeries 方面的专家(我唯一的经验是在线帮助其他人!),所以这可能是完全错误的......

    我认为INFORMATION_SCHEMA最近才添加了对该标准的支持。就像在 DB2 for LUW(我比较熟悉)中一样,INFORMATION_SCHEMA可能只是对“真实”系统目录的一组相对薄的视图,在 DB2 for iSeries 上曾经位于 QSYS2 模式中(在 DB2 for LUW 中它是在 SYSCAT 中,在 DB2 for z/OS 中它在 SYSIBM 中)。

    似乎 DB2 for iSeries V5Rx 文档不再在线,但如果它类似于 DB2 for z/OS 目录,您将在 QSYS2.SYSTABLES 中找到您想要的信息(您可能需要将其查询为 QSYS2/SYSTABLES,具体取决于您正在使用的界面)。从我公认的生疏记忆中,你会想要这样的东西:

    SELECT TABLE_OWNER, TABLE_NAME FROM FROM QSYS2.SYSTABLES
    

    其中 TABLE_OWNER 是架构,而 TABLE_NAME 是名称。您应该在目录中找到各种其他有用的视图,如 SYSVIEWS、SYSCOLUMNS、SYSTRIGGERS 等。可能值得下载旧的 DB2 for iSeries 文档的 PDF,这些文档似乎仍然可用。我怀疑有关系统目录结构的信息将在“SQL 参考”之一中。

    • 1

相关问题

  • 从 DB2 迁移到 MySQL

  • 解释计划中的 TBSCAN GERROW 是什么意思?

  • 在 DB2 SQL 中模拟类似 REGEXP 的行为

  • z/OS 上 DB2 v9 上的 BLOB

  • 解释计划中的 HSJOIN 是什么意思?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve