Вставьте R DataFrame в таблицу SQL Server
Я застрял на этом пару дней... Я не могу найти, в чем проблема. Я использую R в Spotfire. Я пытаюсь вставить результаты фрейма данных в таблицу SQL Server 2014. Это пример того, что я использую:
install.packages("ODBC")
install.packages("DBI")
library(DBI)
library(odbc)
con <- dbConnect(odbc(),
Driver = "SQL Server",
Server = "ServerName",
Database = "DatabaseName",
UID = "UserName",
PWD = "Password")
dbWriteTable(conn = con,
name = "SQlServerTableDestinationName",
value = Datatable)
Я получаю эту ошибку:
TIBCO Enterprise Runtime для R вернул ошибку: "Ошибка в.loadNamespaceImpl(пакет, путь, keep.source, частичный): ошибка при выполнении useDynLib для динамической библиотеки" rlang "из пакета" rlang ", загруженного из P:/TERR/x86_64-pc-windows-library/4.2: ошибка в library.dynam(chname = chname, package = package, lib.loc = ...: не удалось загрузить чужой двоичный язык).
Спасибо!
3 ответа
Пожалуйста, следуйте предложению сообщества TIBCO, предлагаемому здесь: https://community.tibco.com/wiki/tibcor-enterprise-runtime-r-fast-writeback-sql-server-2016
В вашем случае это будет примерно так:
dbcon <- RODBC::odbcDriverConnect(connection_string )
RODBC::sqlSave(dbcon, dat = dataf, "SQlServerTableDestinationName")
Пожалуйста, дайте мне знать, если это поможет
Поскольку вставка INTO ограничена 1000 строками, вы можете использовать dbBulkCopy из пакета rsqlserver.
dbBulkCopy - это расширение DBI, которое связывает популярную утилиту командной строки Microsoft SQL Server с именем bcp для быстрого массового копирования больших файлов в таблицу. Например:
url = "Server=localhost;Database=TEST_RSQLSERVER;Trusted_Connection=True;"
conn <- dbConnect('SqlServer',url=url)
## I assume the table already exist
dbBulkCopy(conn,name='T_BULKCOPY',value=df,overwrite=TRUE)
dbDisconnect(conn)
Я попробовал это, и это, наконец, сработало
install.packages("RODBC")
library(RODBC)
dbcon <- RODBC::odbcDriverConnect('driver={SQL Server};server=ServerName;database=DatabaseName;uid=UserName;pwd=Password' )
sqlSave(dbcon, DataFrame, "SQLServerName", verbose=TRUE, fast=TRUE, append=TRUE, rownames = FALSE)