2

如何使用 HP NonStop SQL/MX 查询架构中所有表的表名和行数?

谢谢!

4

2 回答 2

0

下面是如何在 sql/mx 模式中列出表,注意这里给出的系统目录名称是一个示例,将 NONSTOP_SQLMX_SYSNAME 替换为 NONSTOP_SQLMX_xxxx,其中 xxxx 是系统的展开节点名称。

此外,定义模式名称包括模式版本号,此示例使用 3600。此示例列出了模式 JDFCAT.T 中的所有基表名称。

有关元数据表的信息,请参阅 SQL/MX 参考手册的第 10 章。

表行计数不存储在系统元数据中,因此您无法从那里获取它们。对于表执行 SELECT ROW COUNT FROM TABLE;

SELECT
    O.OBJECT_NAME 
FROM 
    NONSTOP_SQLMX_SYSNAME.SYSTEM_SCHEMA.CATSYS C
    INNER JOIN NONSTOP_SQLMX_SYSNAME.SYSTEM_SCHEMA.SCHEMATA S
        ON (S.CAT_UID = C.CAT_UID)
    INNER JOIN JDFCAT.DEFINITION_SCHEMA_VERSION_3600.OBJECTS O
        on S.SCHEMA_UID = o.SCHEMA_UID
    WHERE C.CAT_NAME = 'JDFCAT' AND
          S.SCHEMA_NAME = 'T' AND
          O.OBJECT_TYPE = 'BT'
    READ UNCOMMITTED ACCESS;     
于 2018-10-18T15:50:35.067 回答
0

这可能会对您有所帮助,尽管这是更标准的 SQL,而且我不确定 sqlmx 有多少变化

SELECT 
    TableName = t.NAME,
    TableSchema = s.Name,
    RowCounts = p.rows
FROM 
    sys.tables t
INNER JOIN 
    sys.schemas s ON t.schema_id = s.schema_id
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
WHERE 
    t.is_ms_shipped = 0
GROUP BY
    t.NAME, s.Name, p.Rows
ORDER BY 
    s.Name, t.Name

显然这是一个例子,用你的替换示例数据和表格信息

于 2018-07-05T22:48:24.900 回答