选择所有表格/视图名称,每个表格行数以Teredata为单位 [英] Select all Table/View Names with each table Row Count in Teredata

查看:15
本文介绍了选择所有表格/视图名称,每个表格行数以Teredata为单位的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我陷入了一个问题。 问题是我想从Teradata获取所有表名称及其行数。

我有一个查询,它提供了特定架构中的所有视图名。

i]SELECT TableName FROM dbc.tables WHERE tablekind='V' AND databasename='SCHEMA' order by TableName;

&;我有一个查询,它给出架构中特定表/视图的行数。

ii]SELECT COUNT(*) as RowsNum FROM SCHEMA.TABLE_NAME;

现在,谁能告诉我如何从查询I中获取结果并将其放入查询II中 您的帮助将不胜感激。

提前谢谢,

Vrinda

推荐答案

这是一个从数据库中的所有表收集行计数的SP,非常基本,没有错误检查等。

它使用dbc.SysExecSQL或EXECUTE IMMEDIATE显示游标和动态SQL:

CREATE SET TABLE RowCounts
     (
      DatabaseName VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC,
      TableName VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC,
      RowCount BIGINT,
      COllectTimeStamp TIMESTAMP(2))
PRIMARY INDEX ( DatabaseName ,TableName )
;

REPLACE PROCEDURE GetRowCounts(IN DBName VARCHAR(30))
BEGIN
  DECLARE SqlTxt VARCHAR(500);
   FOR cur AS
      SELECT
         TRIM(DatabaseName) AS DBName,
         TRIM(TableName) AS TabName
      FROM dbc.Tables
      WHERE DatabaseName = :DBName
      AND TableKind = 'T'
   DO
     SET SqlTxt =
         'INSERT INTO RowCounts ' ||
         'SELECT ' ||
         '''' || cur.DBName || '''' || ',' ||
         '''' || cur.TabName || '''' || ',' ||
         'CAST(COUNT(*) AS BIGINT)' ||  ',' ||
         'CURRENT_TIMESTAMP(2) ' ||
         'FROM ' || cur.DBName ||
         '.' || cur.TabName || ';';

     --CALL dbc.sysexecsql(:SqlTxt);
     EXECUTE IMMEDIATE sqlTxt;
   END FOR;
END;

如果您无法创建表或SP,则可以使用易失性表(如DrBailey建议的那样)并运行以下查询返回的插入:

SELECT
   'INSERT INTO RowCounts ' ||
   'SELECT ' ||
   '''' || DatabaseName || '''' || ',' ||
   '''' || TableName || '''' || ',' ||
   'CAST(COUNT(*) AS BIGINT)' ||  ',' ||
   'CURRENT_TIMESTAMP(2) ' ||
   'FROM ' || DatabaseName ||
   '.' || TableName || ';'
FROM dbc.tablesV 
WHERE tablekind='V' 
AND databasename='schema' 
ORDER BY TableName;
但是,您的系统上可能已经存在这样的例程,您可能会询问您的DBA。如果不一定要100%准确,这些信息也可以从收集的统计数据中提取出来。

这篇关于选择所有表格/视图名称,每个表格行数以Teredata为单位的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆