【问题标题】:Connect R to SQL Server database in windows virtual machine在 Windows 虚拟机中将 R 连接到 SQL Server 数据库
【发布时间】:2018-02-05 16:21:41
【问题描述】:

问题:是否可以通过本地网络将 Ubuntu 上的 R Studio 连接到正在虚拟机(Microsoft Windows 10)上使用的 SQL Server 数据库?

我会继续寻找,我想在我花更多时间之前确保它是可能的。谢谢。

更新:我做不到。我最终通过我创建的 DSN 在 VM 和 Windows 10 上使用了 Rstudio。我无法将 VM 外部的 Rstudio 桥接到本地主机上的 SQL Server 数据库。我在这个 SO 帖子 How to connect to SQL Server in Win7 virtual machine from Mac host? 上尝试了一切,但没有任何乐趣。

【问题讨论】:

  • 一定有可能——毕竟他们在同一个网络中。
  • 什么样的虚拟机? VMware,VirtualBox,...? -- 也许在较小的 StackExchange 网站上有答案。
  • @knb 它是 Oracle VM virtualBox

标签: sql-server tsql rstudio


【解决方案1】:

我不再有权访问任何虚拟机(我在上一份工作时曾这样做过),但这是将 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多