【问题标题】:Connect R and Vertica using RODBC使用 RODBC 连接 R 和 Vertica
【发布时间】:2013-06-21 13:14:33
【问题描述】:

这是我第一次连接到 Vertica。我已经使用 RODBC 库成功连接到 MySQL 数据库。

我在 vertica 中设置了数据库,并从 https://my.vertica.com/download-community-edition/ 安装了 windows 64 位 ODBC 驱动程序

当我尝试使用 R 连接到 vertica 时,出现以下错误:

channel = odbcDriverConnect(connection = "Server=myserver.edu;Database=mydb;User=mydb;Password=password")

Warning messages:
1: In odbcDriverConnect(connection = "Server=myserver.edu;Database=mydb;User=mydb;Password=password") :
[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 = "Server=myserver.edu;Database=mydb;User=mydb;Password=password") :
ODBC connection failed

谁能告诉我如何解决这个问题?或者有没有其他方法可以使用 R 连接到 vertica?

【问题讨论】:

    标签: r rodbc vertica


    【解决方案1】:

    它可能不是最快的,但我更喜欢使用 R 中的 Vertica JDBC 驱动程序。让 ODBC 驱动程序在不同的操作系统中工作有点混乱。如果您已经为其他应用程序安装了 Java 运行时环境 (JRE),那么这相当简单。

    从 MyVertica 门户下载适用于您的 Vertica 服务器版本的 Vertica JDBC 驱动程序。将驱动程序(一个 .jar 文件)放在适合您的操作系统的合理位置。

    RJDBC 安装到您的工作区中:

    install.packages("RJDBC",dep=TRUE)
    

    在您的 R 脚本中,加载 RJDBC 模块并创建 Vertica 驱动程序的实例,调整 classPath 参数以指向您下载的驱动程序的位置和文件名:

    library(RJDBC)
    vDriver <- JDBC(driverClass="com.vertica.jdbc.Driver", classPath="full\path\to\driver\vertica_jdbc_VERSION.jar")
    

    使用驱动对象建立新连接,用您的连接详细信息替换主机、用户名和密码:

    vertica <- dbConnect(vDriver, "jdbc:vertica://host:5433/db", "username", "password")
    

    然后运行您的 SQL 查询:

    myframe = dbGetQuery(vertica, "select Address,City,State,ZipCode from MyTable")
    

    【讨论】:

    • 谢谢@bpanulla。有效。我需要对此添加一个小的更正。 vDriver 应该是 vDriver
    • 啊有趣。我仍在使用 Vertica 5,所以也许他们为更新版本更改了软件包。
    • 感谢@bpanulla。无论如何我可以使用 JDBC 将制表符分隔的文本文件上传到 vertica?
    • 我不知道有什么办法,除了使用某种编程语言(Java、R 等)读取文件并运行插入语句。如果您有一个制表符分隔的数据文件,您最好通过 COPY 命令 (my.vertica.com/docs/6.1.x/HTML/index.htm#1668.htm) 使用 Vertica 的批量加载功能
    【解决方案2】:

    你必须在 JDBC 函数的 classPath 参数中使用双斜杠。 例如,

    vDriver <- JDBC(driverClass="com.vertica.jdbc.Driver", 
    classPath="C:\\Program   Files\\Vertica Systems\\JDBC\\vertica-jdk5-6.1.2-0.jar")
    

    为我工作,而只是复制和粘贴路线失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多