gpt4 book ai didi

r - 将数据从R写入Redshift问题

转载 作者:行者123 更新时间:2023-12-03 09:06:13 25 4
gpt4 key购买 nike

我一直在尝试将在R服务器上的工作空间中创建的数据推回Redshift。使用dbWriteTable(),我可以成功创建表,但是没有将数据写入此新创建的表,并且会产生以下错误:

> dbWriteTable(con, c("schema", "table"), value = df,append=TRUE, 
row.names=FALSE)

Error in postgresqlpqExec(new.con, sql4) :

RS-DBI driver: (could not Retrieve the result : ERROR: syntax error at or
near "STDIN"
LINE 1: COPY "schema"."table" FROM STDIN
^
)

关于代码的注释:
  • 'con'指的是Redshift连接,通用形式的代码如下:
    con <- dbConnect(drv, host="host_name",
    port="port_id",
    dbname="db_name",
    user="username",
    password="password")
  • 由于数据限制,我无法提供完整的数据示例。

  • 最初,我认为这可能是工作空间中的权限问题。但是,我发现了一个非常慢的解决方案,方法是使用dbSendQuery()创建表,然后通过另一个对dbSendQuery()的调用循环遍历希望插入Redshift的数据帧的每一行。这告诉我问题必须与权限以外的其他东西有关,因为我可以低效地完成任务。

    与这个错误有关的任何意见或建议,我们将不胜感激,谢谢。

    最佳答案

    您的客户端“R”应用程序似乎正在尝试使用Postgres COPY ... FROM STDIN语法。 Redshift COPY命令不支持“FROM STDIN”语法,请参见Redshift COPY

    您可能考虑的选项是逐行插入(就像对dbSendQuery()所做的那样),但这会很慢,或者将数据输出到可以上传到Amazon S3并从其中使用COPY with S3 as a data source加载的CSV文件中(快速) 。

    关于r - 将数据从R写入Redshift问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43528370/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com