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

时间:2018-03-02 22:14:04

标签: sql r database hive dbplyr

我目前可以通过beeline CLI访问Apache Hive数据库。我们仍在与IT协商,以便在服务器上获取R。在那之前,我希望(ab)使用R dbplyr包在另一台机器上生成SQL查询,将它们复制并作为原始SQL运行它们。我曾经在sql_render中使用dbplyr在我有一个有效数据库连接的实例中,但我不知道如何在没有有效数据库连接的情况下执行此操作。对我来说理想的情况是:

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() 

有没有办法让这个&#39;虚拟&#39;连接?它可以通过我可以指定SQL变体的方式完成吗?

1 个答案:

答案 0 :(得分:0)

您可以仅使用R生成内存中的SQLite数据库:

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版本)的加速器。

另请参阅以下链接: