Redshift系统表咨询:查询控制台输出捕获与加载警告记录查询
Redshift相关问题解答
问题1:是否存在可捕获Redshift查询控制台输出的系统表?
Redshift并没有专门用来直接捕获控制台输出的查询结果集的系统表,但有不少系统视图能帮你追踪查询的执行轨迹、状态和相关日志信息:
STL_QUERY:记录了所有已执行的查询(成功或失败的都有),能查到查询的起止时间、执行状态、所属会话ID等关键信息。STL_QUERYTEXT:通过queryid关联STL_QUERY,可以查看完整的查询语句文本,方便你回溯执行过的操作。- 如果是COPY/UNLOAD这类数据迁移操作的控制台日志(比如加载进度、错误提示),可以看
STL_LOAD_ERRORS(记录加载失败的具体细节)和STL_UNLOAD_LOG(记录UNLOAD操作的日志内容)。
要是你需要保存查询的结果集,更稳妥的方式是用UNLOAD命令把结果导出到S3,系统表并不会存储查询返回的具体数据哦。
问题2:如何按会话查询Redshift执行语句的警告信息?
针对你遇到的COPY加载警告,Redshift确实有专门的系统视图来追踪这类信息,甚至可以按会话筛选所有执行语句的警告:
STL_LOAD_ERRORS:这个视图会详细记录COPY操作中无法加载的记录,包括错误原因、对应行号、S3文件路径等。你可以用sessionid过滤特定会话的加载问题,示例SQL如下:SELECT * FROM stl_load_errors WHERE sessionid = '<你的会话ID>' ORDER BY starttime DESC;STL_WARNING:这个视图是专门存储Redshift执行过程中所有警告信息的,不止COPY操作,其他语句的警告也会在这里记录。同样用sessionid就能筛选指定会话的内容:SELECT query, message, starttime FROM stl_warning WHERE sessionid = '<你的会话ID>' ORDER BY starttime DESC;- 如果你想查看产生警告的完整语句,可以结合
SVL_STATEMENTTEXT视图,通过query字段关联就能拿到对应的语句文本。
需要提醒的是,这些系统视图的日志有保留期限,默认根据集群存储配置和日志策略保留几天到几周,如果需要长期留存,建议把这些日志导出到S3归档。
内容的提问来源于stack exchange,提问作者akash sharma
相关产品推荐
相关产品推荐

