4

我正在尝试使用包(在 GitHub 上)dplyr与雪花数据库一起使用。dplyr.snowflakedb我能够安装和加载库,然后将类路径设置为指向最新的 JDBC 驱动程序 ( snowflake-jdbc-3.0.9.jar)。

# need to load RJDBC, or error 'could not find function ".jinit"' is thrown
library(RJDBC)
library(dplyr)
library(dplyr.snowflakedb)
options(dplyr.jdbc.classpath = "drivers/snowflake-jdbc-3.0.9.jar")

尝试使用 设置连接对象时src_snowflakedb(),我收到以下错误消息(我删除了帐户详细信息,但它们在实际代码中是正确的):

> nike_db <- src_snowflakedb(user = "user",
                     password = "user",
                     account = "acme",
                     opts = list(warehouse = "my_wh",
                                 db = "my_db",
                                 schema = "my_schema"))
URL: jdbc:snowflake://acme.snowflakecomputing.com:443/?account=acme&warehouse=my_wh&my_db=db&schema=my_schema
Error: 'src_sql' is not an exported object from 'namespace:dplyr'

事实上,当前版本的 dplyr 既不导出也不包含任何src_sql()功能:

> dplyr:::src_sql
Error in get(name, envir = asNamespace(pkg), inherits = FALSE) : 
  object 'src_sql' not found

有没有什么办法解决这一问题?

4

2 回答 2

1

请尝试以下示例代码:

Sys.getenv("JAVA_HOME")
Sys.setenv(JAVA_HOME="C:\\Program Files\\Java\\jdk-1.8\\jre")
Sys.getenv("JAVA_HOME")
install.packages(c("rJava"))
install.packages(c("RJDBC", "DBI", "dplyr"))
install.packages("devtools")
devtools::install_github("snowflakedb/dplyr-snowflakedb")
library(RJDBC)
library(dplyr)
library(dplyr.snowflakedb)
options(dplyr.jdbc.classpath = "C:\\Driver\\snowflake-jdbc-3.11.1.jar")

my_db <- src_snowflakedb(user = "USERNAME" , password = "PASSWORD", account = "test",host = 'test.us-east-1.snowflakecomputing.com',opts = list(warehouse = "WAREHOUSE_NAME",db='DATABASE_NAME',schema='SCHEMA_NAME'))

tbl(my_db, "TABLE_NAME")

笔记 :

a) 如果您的 Snowflake 帐户 URL 类似于“ https://test.snowflakecomputing.com ”,请使用以下格式:

my_db <- src_snowflakedb(user = "USERNAME" , password = "PASSWORD", account = "test", opts = list(warehouse = "WAREHOUSE_NAME",db='DATABASE_NAME',schema='SCHEMA_NAME'))

b) 如果您的 Snowflake 帐户 URL 类似于“ https://test.us-east-1.snowflakecomputing.com ”,请使用以下格式:

my_db <- src_snowflakedb(user = "USERNAME" , password = "PASSWORD", account = "test", host = 'test.us-east-1.snowflakecomputing.com', opts = list(warehouse = "WAREHOUSE_NAME",db='DATABASE_NAME',schema='SCHEMA_NAME'))
于 2020-01-20T02:52:44.167 回答
0

我遇到了同样的问题,不得不返回通过 SF 使用新版本的 JDBC 连接:您可以在此处查看链接:

https://support.snowflake.net/s/article/ka131000000O5Jr/connecting-r-to-snowflake-using-the-jdbc-driver-mac-os-x

你真正需要的是:

result <- dbGetQuery(jdbcConnection, "select current_timestamp() as now")
print(result)
于 2017-07-10T17:57:31.813 回答