将数据从 R 插入雪花 table
Inserting data into snowflake table from R
我的公司最近将 table 从 Oracle 切换到 Snowflake,我正在尝试制作一个 R 脚本,将数据插入到旧的 Oracle 数据库中,将数据插入到雪花中。但是我无法让 dplyr.snowflakedb 库来执行此操作。这是我的代码:
library(dplyr.snowflakedb)
db <- src_snowflakedb(user = credentials$login,
password = credentials$password,
account = "company",
opts = list(warehouse = "WH",
db = "DB",
schema = "STAGE"))
# calculate dataframe "rates"
db_snowflake_copy(con = db$con, from = rates, to = "FORECASTS")
导致以下错误:
Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ", :
Unable to retrieve JDBC result set for COPY INTO FORECASTS FROM c(1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151,
1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 15403
使用 ?db_snowflake_copy 中的示例,我决定尝试将数据写入 csv 文件并从 csv 文件提交到数据库:
tmp <- tempfile()
write_csv(rates, tmp, col_names = FALSE)
db_snowflake_copy(con = db$con, from = paste0("file://",tmp), to = "FORECASTS",
format_opts = list(format = 'csv', field_delimiter = ','))
unlink(tmp)
出现以下错误:
Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ", :
Unable to retrieve JDBC result set for COPY INTO FORECASTS FROM file:///var/folders/y1/7zsj8_x973n4xjwg5gg6s53jr4zz65/T//RtmpZ9D3dD/file2ce511189e2 file_format = (format=csv, field_delimiter=,) (SQL compilation error:
syntax error line 1 at position 152 unexpected ','.
syntax error line 1 at position 153 unexpected ')'.)
对接下来要尝试什么有什么想法吗?
不确定您使用的 dplyr
版本。如果您的账户在西部地区,您可以使用dplyr 0.4.3
和dplyr-snowflakedb 0.1.1
组合来使COPY生效。
最新版本组合dplyr 0.7.3 + dplyr-snowflakedb 0.3.0
适用于地区parm
(西部地区或西部地区以外)。
R控制台东部地区测试新驱动说明如下(R
):
install.packages("devtools")
devtools::install_version("dplyr", version = "0.7.3", repos = "http://cran.us.r-project.org")
devtools::install_github("snowflakedb/dplyr-snowflakedb", ref = "v0.3.0-rc1.1")
测试:
library(RJDBC)
library(dplyr)
library(dplyr.snowflakedb)
options(dplyr.jdbc.classpath = "/Users/myang/driver/snowflake-jdbc-3.0.9.jar")
my_db <- src_snowflakedb(user = "youruserid",
password = "xxxxx",
account = "lflk_merkle",
region_id = "us-east-1",
opts = list(warehouse = "lflk_merkle",
db = "LFLK",
schema = "DEV"))
dplyr::copy_to works for COPY.
我的公司最近将 table 从 Oracle 切换到 Snowflake,我正在尝试制作一个 R 脚本,将数据插入到旧的 Oracle 数据库中,将数据插入到雪花中。但是我无法让 dplyr.snowflakedb 库来执行此操作。这是我的代码:
library(dplyr.snowflakedb)
db <- src_snowflakedb(user = credentials$login,
password = credentials$password,
account = "company",
opts = list(warehouse = "WH",
db = "DB",
schema = "STAGE"))
# calculate dataframe "rates"
db_snowflake_copy(con = db$con, from = rates, to = "FORECASTS")
导致以下错误:
Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ", :
Unable to retrieve JDBC result set for COPY INTO FORECASTS FROM c(1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151,
1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 1540312565.33151, 15403
使用 ?db_snowflake_copy 中的示例,我决定尝试将数据写入 csv 文件并从 csv 文件提交到数据库:
tmp <- tempfile()
write_csv(rates, tmp, col_names = FALSE)
db_snowflake_copy(con = db$con, from = paste0("file://",tmp), to = "FORECASTS",
format_opts = list(format = 'csv', field_delimiter = ','))
unlink(tmp)
出现以下错误:
Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ", :
Unable to retrieve JDBC result set for COPY INTO FORECASTS FROM file:///var/folders/y1/7zsj8_x973n4xjwg5gg6s53jr4zz65/T//RtmpZ9D3dD/file2ce511189e2 file_format = (format=csv, field_delimiter=,) (SQL compilation error:
syntax error line 1 at position 152 unexpected ','.
syntax error line 1 at position 153 unexpected ')'.)
对接下来要尝试什么有什么想法吗?
不确定您使用的 dplyr
版本。如果您的账户在西部地区,您可以使用dplyr 0.4.3
和dplyr-snowflakedb 0.1.1
组合来使COPY生效。
最新版本组合dplyr 0.7.3 + dplyr-snowflakedb 0.3.0
适用于地区parm
(西部地区或西部地区以外)。
R控制台东部地区测试新驱动说明如下(R
):
install.packages("devtools")
devtools::install_version("dplyr", version = "0.7.3", repos = "http://cran.us.r-project.org")
devtools::install_github("snowflakedb/dplyr-snowflakedb", ref = "v0.3.0-rc1.1")
测试:
library(RJDBC)
library(dplyr)
library(dplyr.snowflakedb)
options(dplyr.jdbc.classpath = "/Users/myang/driver/snowflake-jdbc-3.0.9.jar")
my_db <- src_snowflakedb(user = "youruserid",
password = "xxxxx",
account = "lflk_merkle",
region_id = "us-east-1",
opts = list(warehouse = "lflk_merkle",
db = "LFLK",
schema = "DEV"))
dplyr::copy_to works for COPY.