从python将数据推送到redshift数据库时语句太大

Posted

技术标签:

【中文标题】从python将数据推送到redshift数据库时语句太大【英文标题】:statement too large while pushing data into redshift database from python 【发布时间】:2018-11-26 13:25:15 【问题描述】:

我在 redshift 表中推送 pandas 数据框并出现以下错误

cur.execute("INSERT INTO sir_main VALUES " + str(args_str))
psycopg2.ProgrammingError: Statement is too large. Statement Size: 58034743 
bytes. Maximum Allowed: 16777216 bytes`

它会停止执行。推入数据库时​​有什么方法可以配置限制吗?

【问题讨论】:

不,如果这是您的常规流程,您应该考虑更改方法,以便先将数据加载到 s3,然后使用 aws copy 命令。 【参考方案1】:

如果您要加载的行数超过几百行,则应将数据帧作为平面文件保存到 S3,然后使用 COPY 将其加载到 Redshift。 https://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html

【讨论】:

以上是关于从python将数据推送到redshift数据库时语句太大的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Kinesis 将数据从 Lambda (Python) 发送到 Redshift

如何使用 AWS Kinesis Firehose 将嵌套结构推送到 Redshift

我可以使用 AWS Glue 将 S3 上的 json 数据转换为列格式并将其推送到 Redshift 吗?

如何使用 Python 将数据从 MySQL 推送到 HTML [关闭]

将更新从 Python 服务器推送到 Web 界面

使用 Node.js 从 Redshift 将数据复制到 postgres