【问题标题】:Connect to MSSQL using DBI使用 DBI 连接到 MSSQL
【发布时间】:2014-07-21 13:12:50
【问题描述】:

我无法使用 DBI 包连接到 MSSQL。 我正在尝试包装本身中显示的方式

    m <- dbDriver("RODBC") # error

错误:找不到函数“RODBC”

    # open the connection using user, passsword, etc., as
    # specified in the file \file{\$HOME/.my.cnf}
    con <- dbConnect(m, dsn="data.source", uid="user", pwd="password"))    

任何帮助表示赞赏。谢谢

【问题讨论】:

    标签: r r-dbi


    【解决方案1】:

    作为对这个问题的更新:RStudio 已经创建了 odbc package(或 GitHub version here),它通过 DBI 处理与多个数据库的 ODBC 连接。对于您使用的 SQL Server:

    con <- DBI::dbConnect(odbc::odbc(),
                          driver = "SQL Server",
                          server = <serverURL>,
                          database = <databasename>,
                          uid = <username>,
                          pwd = <passwd>)
    

    您还可以设置 dsn 或提供连接字符串。

    【讨论】:

    • 与RODBC 相比,odbc 的主要优势是使用 e 提高了插入性能。 G。 dbWriteTable,见Feature request: Support for ODBC bulk insert and update operations
    • (阅读odbc GitHub自述文件)... 除了安装R包,你还需要在你的机器上安装一个ODBC驱动。如果您从 Microsoft 安装 ODBC SQL Server 驱动程序,则改为设置 driver = "ODBC Driver 17 for SQL Server"。通过odbcinst -j查看可用的驱动程序找到驱动程序行位置并查看该文件,例如more /usr/local/etc/odbcinst.ini
    【解决方案2】:

    看起来曾经有一个用于 DBI 的 RODBC 驱动程序,但现在没有了:

    http://cran.r-project.org/src/contrib/Archive/DBI.RODBC/

    进行了一些调整,可以将其安装在版本 3 R 中,但我没有任何 ODBC 源来对其进行测试。但是m = dbDriver("RODBC") 不会出错。

    > m = dbDriver("RODBC")
    > m
    <ODBCDriver:(29781)> 
    > 
    

    建议您在 R-sig-db 邮件列表中询问,以了解此代码和/或作者发生了什么...

    【讨论】:

      【解决方案3】:

      解决了。 我使用了库 RODBC。它具有连接 sql 和在 R 中运行 sql 查询的强大功能。

      加载库:

      library(RODBC)
      

      # dbDriver 是包含用户 ID、数据库名称、密码等的连接字符串。

      dbhandle <- odbcDriverConnect(dbDriver)
      

      运行 Sql 查询

      sqlQuery(channel=dbhandle, query)
      

      就是这样。

      【讨论】:

        猜你喜欢
        • 2014-11-19
        • 1970-01-01
        • 2017-01-20
        • 1970-01-01
        • 2017-10-15
        • 2019-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多