我想将R连接到我的MAC(El Capitan)上的SQL Server。我可以在Python中很容易地做到这一点,但在R中我做不到。
在Python中,这很容易:
import pymssql
pymssql.connect(server = 'CHWN-DSX-DB02', user = 'XXXX',password ='XXXX',database = 'Info')
对于R,我尝试使用RODBC库,但它不起作用。我认为问题出在“司机”身上:
driver.name <- "SQL Server"
db.name <- "Info"
host.name <- "CHWN-DSX-DB02"
port <-""
server.name <-"XXX"
pwd <- "XXX"
# Use a full connection string to connect to a SAMPLE database
con.text <- paste("DRIVER=",RMySQL::MySQL(),
";Database=",db.name,
";Server=",host.name,
";Port=",port,
";PROTOCOL=TCPIP",
";UID=", server.name,
";PWD=",pwd,sep="")
con1 <- odbcDriverConnect(con.text)
R中的这段代码永远不会结束,当我停止它时,我有这样的警告:
警告消息:
1:在odbcDriverConnect(con.text)中:
[RODBC]错误:状态00000,代码0,消息[iODBC][Driver Manager]dlopen(SQL Server,6):未找到图像
1条答案
按热度按时间abithluo1#
当前设置存在几个问题:
1.常规与具体API:在Python中,您使用的是特定的SQL Server API:
pymssql
。与您的R尝试相比,您应该使用ODBC API:pyodbc
(与RODBC
比较)。请记住,有多种方法可以通过特定的API或通用的API(ODBC、OLEDB、JDBC等)从客户端应用程序连接到后端数据库或数据存储。1.必填驱动程序:要使用任何ODBC库,无论是Python、R还是其他语言,都需要在客户端计算机上安装ODBC驱动程序。在尝试连接之前 * 下载此类驱动程序。几乎每个RDBMS或数据存储都维护(通常免费下载)Windows,Mac和Linux操作系统(包括SQL Server)的ODBC驱动程序:2013或2017。
1.混合R库:在R中,大多数API都遵循DBI标准,包括
ROracle, RJDBC, odbc, RMySQL, RPostgreSQL, RSQLite
。不幸的是,RODBC
并不遵循这个标准。您尝试的连接似乎是使用RMySQL::MySQL()
对象尝试的DBI
连接,DBI
中的 even 不是ODBC连接字符串的一部分。请注意,尽管两者都需要底层ODBC驱动程序(参见#2),但
RODBC
是一个与odbc
不同的库和实现。此外,不要将特定的API(如RMySQL
)与尝试的通用SQL Server ODBC混为一谈。事实上,当你有一个driver.name
变量时,为什么要使用RMySQL还不清楚。'SQL Server'
是Windows ODBC驱动程序名称,而不是macOS或Linux名称。请参见下面的R ODBC连接:RODBC酒店
odbc