ODBC在MS Excel中工作正常,但在R中没有

时间:2014-06-05 05:53:58

标签: r odbc rodbc

我已经设置了我的ODBC驱动程序,以便MS Excel可以将数据导入到电子表格中。

但是,当我尝试使用

建立与R的连接时
ch <- odbcConnect(leprosyDHISdb, uid = leprosyDHISid, pwd = leprosyDHISpw)

然后我收到错误

Warning messages:
1: In odbcDriverConnect("DSN=dhis2;UID=dhis2_viewer;PWD=*********") :
  [RODBC] ERROR: state IM002, code 0, message [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
2: In odbcDriverConnect("DSN=dhis2;UID=dhis2_viewer;PWD=*********") :
  ODBC connection failed

什么可能使R的odbc失败,但对于Excel不能?

5 个答案:

答案 0 :(得分:7)

检查您是否使用32/64位版本的R,还要检查您的ODBC连接是否为32/64位。

使用Windows设置32位DSN导航到以下文件夹 C:\的Windows \ SysWOW64中

使用Windows设置64位DSN导航到以下文件夹 C:\ Windows \ System32下

编辑:以下博客是您可能会觉得有用的优秀指南

http://sandymuspratt.blogspot.co.uk/2013/01/getting-access-data-into-r.html

答案 1 :(得分:2)

我最近遇到了同样的问题。这就是我解决它的方法:

1)转到页面:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html并为您选择相关的操作系统和版本。

2)使用&#34; Instant Client Package - ODBC下的链接下载软件包:用于启用ODBC应用程序的附加库&#34;

3)将C盘下的文件解压缩为C:\ instantclient_12_1并在其中运行odbc_install.exe。

4)再次尝试连接。

答案 2 :(得分:2)

不确定这是否是最正确的解决方法,但这对我有用。

  1. 使用导入的数据转到Excel中的电子表格。
  2. 点击数据 - &gt;连接
  3. 双击查询
  4. 单击“定义”选项卡
  5. 复制连接字符串并将其粘贴到odbcDriverConnect函数中的R中:

    myConn&lt; -odbcDriverConnect(“DRIVER = SQL Server; SERVER = fooServer; UID = foo_viewer; PWD = 1pityDfoo !; APP = Microsoft Office 2010; WSID = foocomputername; DATABASE = DTS”)

  6. 您还可以复制命令文本并将其粘贴到sqlQuery函数中的R中:

    mydata&lt; - sqlQuery(myConn,“SELECT DTS.dts_id,DTS.dts_no,DTS.unit_code,DTS.originator,DTS.doc_type_id,DTS.doc_date,DTS.subject,DTS.remarks,DTS.status,DTS .is_confidential,DTS.created_by,DTS.date_created,DTS.updated_by,DTS.date_updated,DTS.timestamp FROM DTS.dbo.DTS DTS“)

答案 3 :(得分:2)

这种解决方法帮助了我:

  1. 转到ODB数据源管理员([Win] + ODBC ...)
  2. 添加新DNS(并不重要,保留用户DNS);将源指向所需的DB并命名新的DNS(例如dbAdHocForR)
  3. 返回R定义频道(只调用没有任何其他参数的DNS):ch&lt; - odbcConnect(&#34; SQL Server&#34;)
  4. 使用频道定义SQL查询:q1&lt; - sqlQuery(ch,&#34;从dbo.RTestTable选择前1000 *&#34;)

答案 4 :(得分:1)

尝试使用 odbcDriverConnect 和连接字符串。

ch <- odbcDriverConnect("Driver={Oracle in OraClient11g_home1};Dbq=leprosyDHISdb;Uid=leprosyDHISid;Pwd=leprosyDHISpw;")

您可能需要检查https://www.connectionstrings.com/以查找特定的连接字符串。 This is the one I used