如何在DataGrip中按间隔重复执行查询并收集历史结果?
问题描述
我有一条查询语句:
select count(*), now() from some_table;
执行后输出格式为:
{some_number} {timestamp}
DataGrip里的时钟按钮可以设置固定间隔重复执行该查询(比如每60秒),但每次执行会覆盖之前的结果。我希望把每次执行的结果收集在同一个结果页面中,呈现为:
{some_number} 2023-02-15 12:15:56.882545 +00:00 {some_number} 2023-02-15 12:16:56.882545 +00:00 {some_number} 2023-02-15 12:17:56.882545 +00:00
以此查看数据随时间的变化,这只是临时排查问题用,不想开发后端功能,请问DataGrip有没有实现方法?
解决方案
有两种简单的方法可以实现:
方法一:用临时表持久化历史结果
适合需要在会话内保留历史数据的场景,关闭数据库连接前数据不会丢失:
- 先创建一个会话级临时表(仅当前连接可见,关闭连接自动销毁):
CREATE TEMPORARY TABLE query_history ( record_count BIGINT, query_time TIMESTAMP WITH TIME ZONE );
- 修改原查询语句,每次执行时将新结果插入临时表,同时查询所有历史数据:
INSERT INTO query_history (record_count, query_time) SELECT count(*), now() FROM some_table; SELECT record_count, query_time FROM query_history ORDER BY query_time;
之后用DataGrip的重复执行功能运行这个语句即可,每次执行都会把新结果追加到临时表,查询结果会展示所有历史记录。
方法二:使用DataGrip的「追加结果」功能
适合临时查看、无需持久化数据的场景:
- 点击执行按钮旁边的下拉箭头,选择「Run with Options」
- 在弹出的窗口中勾选「Append results」选项
- 设置重复执行的间隔时间后启动任务
这样每次查询的结果会直接追加到同一个结果面板中,不会覆盖之前的数据。
内容的提问来源于stack exchange,提问作者yuvi
相关产品推荐
相关产品推荐

