从 stl_load_commits 获取 Redshift COPY 命令的表名

Posted

技术标签:

【中文标题】从 stl_load_commits 获取 Redshift COPY 命令的表名【英文标题】:Get table name of Redshift COPY commands from stl_load_commits 【发布时间】:2020-05-13 02:16:00 【问题描述】:

试图获取在特定日期运行的 COPY 命令列表以及为每个 COPY 命令更新的表。

使用此查询:

select
        slc.query as query_id, 
        trim(slc.filename) as file, 
        slc.curtime as updated, 
        slc.lines_scanned as rows, 
        sq.querytxt as querytxt
from stl_load_commits slc
    join stl_query sq on sq.query = slc.query
where trunc(slc.curtime) = '2020-05-07';

我们如何获取每个 COPY 命令更新的表?也许在querytxt 上使用 Redshift RegEx 函数?或者加入另一个系统表以查找表 ID 或名称?

【问题讨论】:

表名可能是查询中的第二个单词(COPY 之后),因此您可以尝试提取它。查看一些执行复制操作的查询,看看是否可以找到一致的模式。 【参考方案1】:

此正则表达式将从stl_query.querytxt 中选择tableschema.table

select
        slc.query as query_id,
        trim(slc.filename) as file,
        slc.curtime as updated,
        slc.lines_scanned as rows,
        sq.querytxt as querytxt,
        REGEXP_REPLACE(LOWER(sq.querytxt), '^copy (analyze )?(\\S+).*$', '$2') AS t
from stl_load_commits slc
    join stl_query sq on sq.query = slc.query
where trunc(updated) = '2020-05-07';

【讨论】:

以上是关于从 stl_load_commits 获取 Redshift COPY 命令的表名的主要内容,如果未能解决你的问题,请参考以下文章

复制命令 Amazon Redshift

如何从 Node-RED/ Octoblu 获取数据到 Power BI

应该使用哪个节点将数据从MQTT代理获取到node - red

RegEx - 正向后视中的可选子字符串

有没有办法从每组行中获取 2 行? [复制]

如何从 RGB 值中获取 CGColor?