如何在 R 中连接到 SQL Server 数据库
Posted
技术标签:
【中文标题】如何在 R 中连接到 SQL Server 数据库【英文标题】:How do I connect to an SQL server database in R 【发布时间】:2015-11-12 23:04:44 【问题描述】:我正在尝试使用 R 连接到 SQL Sever 数据库,但不确定查询字符串的详细信息。我通常在 SQL Server 2008 上使用 SQL Server Management Studio,并使用单点登录进行连接。我找到了下面的例子
myconn <- odbcDriverConnect(connection="Driver=SQL Server
Native Client 11.0;server=hostname;database=TPCH;
trusted_connection=yes;")
我收到以下警告消息
Warning messages:
1: In odbcDriverConnect(connection = "Driver=SQL Server \nNative Client 11.0;server=hostname;database=TPCH;\ntrusted_connection=yes;") :
[RODBC] ERROR: state IM002, code 0, message [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
2: In odbcDriverConnect(connection = "Driver=SQL Server \nNative Client 11.0;server=hostname;database=TPCH;\ntrusted_connection=yes;") :
ODBC connection failed
如何找到我需要的细节?
【问题讨论】:
我认为您只需要“SQL Server”作为您的驱动程序。这就是我用来连接 SQL Server 2012 的全部内容。 我认为你已经(在你的实际实现中)用你的实际主机名替换了 server=hostname 中的主机名....\ 【参考方案1】:我过去曾使用我已经拥有的 odbc 命名连接来完成此操作。如果您不知道,您可以在 Windows 中通过输入搜索提示“odbc”并选择“设置数据源”来创建一个。例如 - 如果您将 odbc 连接命名为“con1”,则可以通过以下方式连接:
con<-odbcConnect('con1') #opening odbc connection
df<-sqlQuery(con, "select *
from ssiD.dbo.HOURLY_SALES
") #querying table
close(con)
【讨论】:
windows 的哪个搜索提示然后将您带到 odbc 管理? 是的。然后设置到数据库的命名连接 @user1605665 这对您不起作用吗?如果您需要有关 ODBC 连接的说明 - google.com/… 我收到一个错误,表明 odbcConnect 函数未知。我应该先安装一个包吗? @Eralper - 可能就是这种情况。install.packages('RODBC')
应该可以工作。【参考方案2】:
这对我有用。
library(RODBC)
dbconnection <- odbcDriverConnect("Driver=ODBC Driver 11 for SQL Server;Server=server_name; Database=table_name;Uid=; Pwd=; trusted_connection=yes")
initdata <- sqlQuery(dbconnection,paste("select * from MyTable;"))
odbcClose(channel)
另外,请参阅这些链接。 RODBC odbcDriverConnect() Connection Error
https://www.simple-talk.com/sql/reporting-services/making-data-analytics-simpler-sql-server-and-r/
【讨论】:
【参考方案3】:问题比这个简单。最大的线索是错误消息中的\n
。某些东西重新排列了您的连接字符串,因此驱动程序名称中现在有一个换行符。这与任何注册的驱动程序名称都不匹配。痛苦和苦难随之而来。确保你的整个连接字符串在一行上!
我经常使用:
driver=SQL Server Native Client 11.0; ...
而且效果很好。比不得不依赖预定义的连接名称要好得多。
【讨论】:
【参考方案4】:尝试另一个 ODBC 驱动程序。 在 Windows 中按“windows”按钮,然后键入“odbc”。 单击“数据源 (ODBC)”链接。 转到“驱动程序”选项卡以查看 SQL Server 的可用驱动程序。 另外 - 删除连接字符串中分号后的“”空格。 注意 - 数据库属性应该指向一个数据库名而不是一个表名。
这对我有用:
odbcDriverConnect("Driver=SQL Server Native Client 11.0;Server=<IP of server>;Database=<Database Name>;Uid=<SQL username>;Pwd=<SQL password>")
【讨论】:
【参考方案5】:首先,您需要安装包“RSQLServer”及其所有依赖项。 然后在 RStudio 中执行以下命令,带上相关参数:
conn <- DBI::dbConnect(RSQLServer::SQLServer(),
server = '<server>',
port = '<port>',
properties = list(
user = '<user>',
password = '<password>'
))
最后,db_list_tables(conn)
为您提供了相应数据库中的表列表。
【讨论】:
RSQLServer
似乎已从 CRAN 中删除以上是关于如何在 R 中连接到 SQL Server 数据库的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 JDBC 在 android 中连接到 sql server 2008