我不再有权访问任何虚拟机(我在上一份工作时曾这样做过),但这是将 R 连接到 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-you-can-see>\\export\\filename.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\\n'
)");
由于 insert INTO 限制为 1000 行,您可以从 rsqlserver 包中进行 dbBulkCopy。
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)
最后。 . .
library(dplyr)
library(RODBC)
dbhandle <- odbcDriverConnect('driver={SQL Server};server=Server_Name;database=DB_Name;trusted_connection=true')
NEEDDATE <- as.Date('8/20/2017',format='%m/%d/%Y')
# DataSet1
DataSet1<-paste("DECLARE @NEEDDATE nvarchar(25)
SET @NEEDDATE = '2017-07-20'
SELECT . . .
)")
DataSet1 <- sqlQuery(dbhandle, DataSet1)
DataSet2 <- sqlQuery(dbhandle, DataSet2)
Combined <- rbind(DataSet1, DataSet2)