Путем записи данных в CSV локально, а затем с помощью BULK INSERT (недоступно в виде встроенной функции, похожей на sqlSave), данные можно записать на MS SQL Server очень быстро.
toSQL = data.frame(...);
write.table(toSQL,"C:\\export\\filename.txt",quote=FALSE,sep=",",row.names=FALSE,col.names=FALSE,append=FALSE);
sqlQuery(channel,"BULK
INSERT Yada.dbo.yada
FROM '\\\\<server-that-SQL-server-can-see>\\export\\filename.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\\n'
)");
Или. , .
Поскольку вставка 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)