如何在 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 数据库的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Eclipse 中连接到新 SQL Server

在 C# 中连接到 SQL Server 时出现问题

无法使用 JDBC 在 android 中连接到 sql server 2008

如何在 swing 中连接到 h2 数据库

如何在 java 类方法中连接到我的数据库 sql 并在另一个类中调用它?

如何在 PL/SQL 中连接到另一个用户