Вставка данных в таблицу снежинок из R - PullRequest
0 голосов
/ 23 октября 2018

Моя компания недавно переключила таблицу с 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 ')'.)

Любые идеи о том, что попробовать дальше?

1 Ответ

0 голосов
/ 27 октября 2018

Не уверен, какую версию dplyr вы используете.Если ваша учетная запись находится в западном регионе, вы можете использовать комбинацию dplyr 0.4.3 и dplyr-snowflakedb 0.1.1, чтобы копирование работало.

Последняя версия комбинации dplyr 0.7.3 + dplyr-snowflakedb 0.3.0 работает с регионом parm (для западного региона или за пределами западарегион).

Инструкции по тестированию нового драйвера с восточным регионом в консоли R следующие (в R):

  1. install.packages ("devtools")

  2. devtools :: install_version ("dplyr", версия = "0.7.3", repos = "http://cran.us.r -project.org ")

  3. devtools :: install_github ("snowflakedb / dplyr-snowkedb", ref = "v0.3.0-rc1.1")

  4. тестирование:

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.
...