【问题标题】:Execute Postgres Function in R在 R 中执行 Postgres 函数
【发布时间】:2019-08-27 16:02:41
【问题描述】:

我正在尝试在 R 中执行一个 postgres 函数(使用 Spotfire Terr),但是我无法获得适用于 dbSendQuery 的语法

我已经尝试了 dbGetQuery 和 dbSendQuery 并且无法让它工作。我查找了几个示例,但我发现的唯一示例是具有“插入”或“更新”语句的示例。我一直无法找到如何执行功能。我看到使用 sqlExecute (dbcon, "EXEC .....") 的 sql server 是可能的。是否有与 Postgres 等效的东西?

所以函数会根据传递的 3 个参数执行一些插入语句。这是我尝试过的:

Name<-'this is a test'
AInteger<-1
BInteger<-2
result<- dbSendQuery(conn, 'select * from "Main"."InsertDataSet"(?,?,?)', list(Name, AInteger,bInteger))  

该函数有 3 个参数。在 postgres 数据库中,我使用 select * from "Main"."InsertDataSet"('a name',123,124) 调用该函数。我认为它可以在 R 中以相同的方式调用...我找不到差异示例,否则。

我收到以下错误

TIBCO Spotfire 统计服务返回错误:'错误:RS-DBI 驱动程序:(无法检索结果:错误:“?”处或附近的语法错误 第 1 行:从“Main”中选择 *。“InsertDataSet”? ^ ) eval(expr, envir, enclos) eval(expr, envir, enclos) dbSendQuery(conn, "select * from \"Main\".\"InsertDataSet\"?", 标准通用(“dbSendQuery”) .standardGeneric(“dbSendQuery”,结构(函数(conn,语句, dbSendQuery(conn, "select * from \"Main\".\"InsertDataSet\"?", postgresqlExecStatement(conn, statement, ...) 空值'。 在 Spotfire.Dxp.Data.DataFunctions.Executors.RemoteFunctionClient.OnExecuting() 在 Spotfire.Dxp.Data.DataFunctions.Executors.AbstractFunctionClient.d__31.MoveNext() 在 Spotfire.Dxp.Data.DataFunctions.Executors.SPlusFunctionExecutor.d__12.MoveNext() 在 Spotfire.Dxp.Data.DataFunctions.DataFunctionExecutorService.d__3.MoveNext()

【问题讨论】:

    标签: r postgresql terr


    【解决方案1】:

    我从未使用过 R Postgres 包,但通过 this SO answer 我可以提出以下建议:

    sql <- "SELECT * FROM Main.InsertDataSet($1,$2,$3)"
    result <- dbSendQuery(conn, sql, c(Name, AInteger,bInteger))
    out <- dbFetch(result)
    dbClearResult(result)
    

    或者更直接

    out <- dbGetQuery(conn, sql, c(Name, AInteger,bInteger))
    

    【讨论】:

    • 我在上面进行了更改,但现在我的最后一条语句出现错误 dbDisconnect(conn) postgresqlCloseConnection(conn, ...) 中的错误:连接有待处理的行(首先关闭打开的结果集) 我想在关闭连接之前将结果发送到某个地方吗?
    • OK 这个 Postgres 函数在做什么?
    • 我使用了 dbGetQuery 而不是 dbSendQuery,它现在可以正常工作,没有任何错误。谢谢!!
    • @TimBiegeleisen,我通过编辑你的问题做了一些假设,希望我没有走得太远。
    • @r2evans 一点也不,感谢您的帮助。 OP 最初绑定列表的尝试对我来说似乎不可行,所以我试着四处挖掘。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多