如何在没有数据库连接的情况下从dbplyr生成sql?

gijlo24d  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(352)

我目前可以通过 beeline 客户端。我们仍在与它谈判以获得 R 在服务器上。在此之前,我想(ab)使用
R dbplyr 打包以在另一台计算机上生成sql查询,复制它们,并将它们作为原始sql运行。我用过 sql_renderdbplyr 在过去的例子中,我有一个有效的数据库连接,但我不知道如何做到这一点,没有一个有效的数据库连接。对我来说,最理想的情况是:

con <- dummy_connection('hive')   # this does not exist, I think
qry <- tbl(con,'mytable') %>%     # complex logic to build a query
  select(var1,var2) %>%
  filter(var1 > 0)   # etc...
sql_render(qry) %>%               # cat it to a file to be used on another machine.
  as.character() %>%
  cat()

有没有办法建立这种“虚拟”联系?我可以指定sql的变体吗?

qmb5sa22

qmb5sa221#

只需使用r:

library(DBI)
library(odbc)
library(RSQLite)
library(tidyverse)
library(dbplyr)

con <- dbConnect(RSQLite::SQLite(), ":memory:")

data("diamonds")

dbWriteTable(con, "diamonds", diamonds)

使用内存中的sql数据库和db连接,您应该能够(ab)使用 dbplyr 连接到数据库,让r为您编写sql。
这只是sqlite,而不是hive。但希望它仍然是从r到sqlite再到hive(或您首选的sql版本)的加速器。
另请参见以下链接:
sqlite文格特
布拉德利的演示(以上代码的源代码)

相关问题