python - 如何在本地错误日志文件中获取 Redshift 错误?

标签 python sql amazon-redshift

我正在尝试将 Python 代码中的批量数据从 API 加载到我的数据仓库。我专门使用的库是 Boto 和 psycopg2。将数据/文件加载到 S3 后,我将触发 SQL 脚本以将数据从 S3 复制到 amazon redshift。

现在,重点是如果有任何错误,我的Python代码将以状态1退出。每次我都需要去检查STL_LOAD_ERRORS表来检查错误。 我想将其提取到代码的变量中并将其写入日志文件。

请告诉我这是否可能,如果可能,请告诉我如何做。

最佳答案

这很笼统,但可以满足您的需求

import psycopg2
import logging

# connect to database somewhere up here

data_q = """
         COPY COMMAND
         """

error_q = """
          SELECT filename, err_reason FROM
          STL_LOAD_ERRORS 
          ORDER BY starttime DESC LIMIT 1;
          """

def main():
    with conn.cursor() as cursor:
        try:
            cursor.execute(data_q)
        except psycopg2.Error as e:
            cursor.execute(error_q)
            err = cursor.fetchone()
            logging.error('{} failed to upload due to {}'.format(*err))
            conn.rollback()

if __name__ == "__main__":
    main()

关于python - 如何在本地错误日志文件中获取 Redshift 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49808860/

相关文章:

sql - oracle sql 开发人员正在截断我的结果

mysql - 为什么 SQL 最终将 NULL 值视为 FALSE?

amazon-redshift - Redshift 是否按 DISTKEY 顺序分发?

amazon-web-services - 将 JSON 数据加载到 AWS Redshift 导致 NULL 值

python - 在 windows 10 中以高分辨率测量两个 python 进程之间的 zmq 延迟

python - 遍历 pandas 中列名和行索引的成对组合

python - 禁用 WTForms SelectField 中的选项之一

python - 如何根据数组的两个日期添加列值?

sql - Postgresql:按顺序插入嵌套选择和 NEXTVAL

mysql - 使 Redshift 的 DATEDIFF 表现得像 MySQL 的 TIMESTAMPDIFF