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

Tom*_*Tom 11 odbc r rodbc

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

但是,当我尝试与R建立连接时,使用

ch <- odbcConnect(leprosyDHISdb, uid = leprosyDHISid, pwd = leprosyDHISpw)
Run Code Online (Sandbox Code Playgroud)

然后我得到了错误

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
Run Code Online (Sandbox Code Playgroud)

是什么让odbc失败的R,但不是Excel?

Dan*_*ner 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


Tom*_*Tom 2

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

  1. 转到包含导入数据的 Excel 电子表格。
  2. 单击数据 -> 连接
  3. 双击查询
  4. 单击定义选项卡
  5. 复制连接字符串并将其粘贴到odbcDriverConnect函数内的 R 中:

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

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

    mydata <- sqlQuery(myConn, "选择 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 来自 DTS.dbo.DTS DTS")