【发布时间】:2017-03-24 19:17:40
【问题描述】:
我使用 postgres,我需要你们所有 PG 专家的帮助... 我希望从大量源表中跟踪计数,这些表的计数每天都在变化。我想在跟踪器表中使用表名、行数和表大小,以及一个名为 created_dttm 字段的列来显示何时从源表记录此行数。这是为了跟踪表计数如何随时间变化并寻找峰值。
insert into tracker_table( tablename, rowcount, tablesize, timestamp)
from
(
(select schema.tablename ... - not sure how to drive this to pick up a list of tables??
, select count(*) from schema.tablename
, SELECT pg_size_pretty(pg_total_relation_size('"schema"."tablename"'))
, select created_dttm from schema.tablename
)
);
此外,我想从源表中获取第四列的特定列。这将是源表中的 created_dttm 时间戳字段,我想运行一个简单的 sql 来将此日期获取到跟踪器表。有什么建议可以解决这个问题吗?
【问题讨论】:
-
您需要检查的表列表是静态的,还是您的流程需要考虑进入/删除的新表?
-
感谢您的回复,表格列表是静态的
-
您可以简单地为每个表编写相同的查询。不过,更好的方法仍然是您需要使用动态 SQL。我要做的是创建一个函数来传递表名并动态执行您需要的查询。然后,您只需在每个表上静态调用所述函数,或者查询 nformation_schema.tables (如果您的表列表不是静态的,则必须执行此操作。此外,此答案对可能相关的问题进行了一些讨论你:stackoverflow.com/questions/32210193/…
-
非常有趣!我需要挖掘相应的 postgres sql 表示法。我明白你的意思了。我可以对特定表进行多项选择并获取计数。我正在寻找一种方法来获取表列表的循环,然后运行查询以填充到跟踪器。我不想插入值'table1',选择...然后插入'table2',选择..单独填充表名字段
-
这种有你提到的:stackoverflow.com/questions/24618672/…记住,你只能在postgres的PG/PGSQL函数中做动态sql。
标签: sql postgresql