R-如何使用dbplyr将查询存储在Oracle临时表中,而无需在本地存储数据



我有一个我要查询的数据集,该数据集太大了,无法存储在我的个人计算机上。我想使用dbplyr将数据存储在临时表中,但是我遇到了尝试这样做的问题。

这是我的代码:

library("ROracle")
library("dplyr")
## Let dbplyr know that we're in an Oracle environment
sql_translate_env.OraConnection <- dbplyr:::sql_translate_env.Oracle
sql_select.OraConnection <- dbplyr:::sql_select.Oracle
sql_subquery.OraConnection <- dbplyr:::sql_subquery.Oracle
## Connect to database
drv = dbDriver("Oracle")
host = "myHost"
port = 1521
sid = "myServerName"
connect.string = paste(
  "(DESCRIPTION=",
  "(ADDRESS=(PROTOCOL=tcp)(HOST=", host, ")(PORT=", port, "))",
  "(CONNECT_DATA=(SID=", sid, ")))", sep = "")
con = dbConnect(drv, username="myUsername", password="myPassword", dbname=connect.string)
## Create the query
remote = tbl(con, "myTable") %>%
  filter(GRP_ID == 12345)
## Attempt to run the query and store it in a temporary table, but this fails!
compute(remote)

此代码给我以下错误消息:

Error in .oci.SendQuery(conn, statement, data = data, prefetch = prefetch,  : 
  ORA-14459: missing GLOBAL keyword

是否有人能够使用Oracle数据库和DBPLYR来完成此任务,如果是,您能否分享您如何使其工作?

dbplyr的最新版本自动识别ROracle连接并将其翻译到我们的Oracle翻译中,因此您无需再使用代码顶部的解决方法升级后。另外,copy_to()命令将是您可以用来缓存查询结果的内容,但需要下载数据。copy_to()命令足够聪明,可以知道何时通过数据框以上载或需要缓存的SQL语句。

我在dbplyr存储库上提出了一个问题。多亏 mgirlich 谁链接了拉动请求,应很快纠正它。

相关内容

  • 没有找到相关文章

最新更新