是否存在可查询COPY命令所用manifest文件的Redshift系统视图
Redshift manifest文件关联系统视图查询方案
Redshift当前没有原生的系统视图可以直接查询COPY命令执行时关联的manifest文件路径或内容。你之前查询的STL_LOAD_COMMITS、STL_FILE_SCAN确实仅存储manifest中列明的实际数据文件路径,不会单独记录manifest本身的S3 URI,也不会持久化manifest的内容。
你可以通过以下两种方案实现关联需求:
- 关联系统查询日志视图提取manifest URI
你执行的COPY命令的完整SQL文本会存储在Redshift的查询日志视图中,你可以通过筛选带MANIFEST关键字的COPY语句,直接从SQL文本中提取manifest的S3 URI,参考查询语句如下:
如果你的COPY命令长度超过SELECT query, starttime, querytxt FROM stl_query WHERE querytxt ILIKE '%COPY%' AND querytxt ILIKE '%MANIFEST%' AND starttime >= CURRENT_DATE - INTERVAL '7 days' -- 可按需调整时间范围 ORDER BY starttime DESC;stl_query的querytxt字段4000字符的存储上限,可以改用SVL_STATEMENTTEXT视图拼接完整SQL后再提取。提取到manifest URI后即可和你Python脚本生成的哈希键做关联操作。 - 自定义审计表做持久化关联
系统查询日志默认仅保留7-30天的记录,如果你需要长期留存关联关系,可以自行创建一张审计表,每次在Python脚本中执行COPY命令后,同步将manifest URI、对应的COPY命令query ID、哈希键等字段写入审计表,后续关联查询时直接使用该自定义表即可,留存周期完全可控。
内容的提问来源于stack exchange,提问作者Yauheni Khvainitski
相关产品推荐
相关产品推荐

