【发布时间】:2016-03-09 06:25:27
【问题描述】:
我需要枚举我有 ODBC 连接的 iSeries DB2 数据库(我相信版本 7,但我可能是错的)中的所有表(我的意思是获取模式和表名字符串的列表)和视图.我试过了:
show tables
select * from syscat.tables
但是,服务器分别以未知命令响应show tables 和未知表用于选择:
错误 [42S02] [IBM][System i Access ODBC 驱动程序][DB2 for i5/OS]SQL0204 - TABLES in SYSCAT type *FILE not found
我知道枚举表是有可能的,因为 Visual Studio 是从服务器资源管理器中完成的。我可能忽略了一些非常明显的东西,但我并不真正精通 ODBC。谢谢。
【问题讨论】:
-
“枚举”如何?
syscat.tables的 contents 是一大堆信息,包括名称。如果不查看文档,我猜您不能使用 SQL 语句作为show tables的参数(假设这是一个有效的命令,我必须检查)。或者,您必须指定哪一列具有表/模式名称(您无法使用SELECT *。为什么还要枚举所有表?为什么通过服务器资源管理器查找它还不够? -
数据库很大,有 3000 多张表,我需要提供一份报告,其中有任何数据。我可以轻松地在表上执行
count(*),但为此我需要一个表名列表。 -
顺便说一句,没有
syscat.tables表。尝试对其进行选择会返回ERROR [42S02] [IBM][System i Access ODBC Driver][DB2 for i5/OS]SQL0204 - TABLES in SYSCAT type *FILE not found -
嗯,看来我现在忘记了所有的前缀。顺便说一句,如果表在常规 i5/OS 土地上,SYSTABLESTAT 有行数。
标签: c# db2 odbc ibm-midrange