Amazon redshift 如何捕获插入到包含标识列的红移表中的行数?

Amazon redshift 如何捕获插入到包含标识列的红移表中的行数?,amazon-redshift,identity-column,Amazon Redshift,Identity Column,在Amazon Redshift中,我使用以下查询捕获上次查询插入的行数: SELECT SUM(rows) FROM stl_insert WHERE query = pg_last_query_id(); 当我插入到包含标识列的表中时,这种方法似乎不起作用,因为Redshift也运行这个查询:从stv_IDENTITY_highwater中选择*并将此查询的id用于pg_last_query_id() 是否有其他方法可以捕获在此场景中插入的行数?您可以使用系统表提取要计数的查询的ID 如果

在Amazon Redshift中,我使用以下查询捕获上次查询插入的行数:

SELECT SUM(rows) FROM stl_insert WHERE query = pg_last_query_id();
当我插入到包含标识列的表中时,这种方法似乎不起作用,因为Redshift也运行这个查询:从stv_IDENTITY_highwater中选择*并将此查询的id用于pg_last_query_id()

是否有其他方法可以捕获在此场景中插入的行数?

您可以使用系统表提取要计数的查询的ID

如果您是系统的唯一用户,则可以假定您最后的第二个查询就是您要查找的查询。

您可以使用系统表提取要计数的查询的ID


如果您是系统的唯一用户,则可以假定您最后的第二个查询就是您要查找的查询。

在标识列为红移的表中插入值时,会在内部触发一个查询,如
SELECT*FROM stv\u identity\u highwater
,因此计数结果为
0

添加
pg\u last\u query\u id()-1
以获取插入计数:


从stl\u insert中选择SUM(rows),其中query=pg\u last\u query\u id()-1

用于在标识列为红移的表中插入值,会在
选择*FROM stv\u identity\u highwater
时在内部触发查询,因此计数结果为
0

添加
pg\u last\u query\u id()-1
以获取插入计数:


从stl\u insert中选择SUM(rows),其中query=pg\u last\u query\u id()-1

很遗憾,这不起作用:

SELECT SUM(rows) FROM stl_insert WHERE query = pg_last_query_id()-1;
as查询id在红移中不连续

对单个表检索的方式如下:

      WITH last_queryid_for_table AS (

           SELECT query, MAX(si.starttime) OVER () as last_q_stime, si.starttime as stime  FROM stl_insert si,
           SVV_TABLE_INFO sti WHERE sti.table_id=si.tbl AND sti."table"='$your_table_name' 
)

           SELECT SUM(rows) FROM stl_insert si, last_queryid_for_table lqt 
           WHERE si.query=lqt.query AND lqt.last_q_stime=stime
  • 当然,您应该考虑查询是否失败。如果最后一个结果失败,上述查询将为您提供最新的执行统计信息

    • 不幸的是,这不起作用:

      SELECT SUM(rows) FROM stl_insert WHERE query = pg_last_query_id()-1;
      
      as查询id在红移中不连续

      对单个表检索的方式如下:

            WITH last_queryid_for_table AS (
      
                 SELECT query, MAX(si.starttime) OVER () as last_q_stime, si.starttime as stime  FROM stl_insert si,
                 SVV_TABLE_INFO sti WHERE sti.table_id=si.tbl AND sti."table"='$your_table_name' 
      )
      
                 SELECT SUM(rows) FROM stl_insert si, last_queryid_for_table lqt 
                 WHERE si.query=lqt.query AND lqt.last_q_stime=stime
      
      • 当然,您应该考虑查询是否失败。如果最后一个结果失败,上述查询将为您提供最新的执行统计信息

      您可以找到与您的用户ID匹配的最新STL_查询条目。您可以找到与您的用户ID匹配的最新STL_查询条目。您好,请在代码块中格式化sql查询?这使得阅读起来更加愉快。您好,您能用代码块格式化sql查询吗?这使得阅读更加愉快。