首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RJDBC连接R和Netezza

使用RJDBC连接R和Netezza
EN

Stack Overflow用户
提问于 2014-03-10 14:06:25
回答 2查看 4.7K关注 0票数 2

我试图使用JDBC驱动程序将R与Netezza连接起来。

我设法成功地与数据库连接,但结果并不一致。

代码语言:javascript
复制
# Here are the connection details
library(RJDBC)
drv <- JDBC(driverClass="org.netezza.Driver", classPath = "C://JDBC//nzjdbc.jar", "'")
con <- dbConnect(drv, "jdbc:netezza://10.206.0.66:5480//DBASE", "USER", "PASS")

# > con
# An object of class "JDBCConnection"
# Slot "jc":
# [1] "Java-Object{org.netezza.sql.NzConnection@bce3d7}"

# Slot "identifier.quote":
# [1] "'"

res <- dbSendQuery(con, "SELECT * FROM DBASE.MARBEL.DATOS limit 10000;")
res <- fetch(res, n = -1)

问题是字段被重新命名为列表,其中包含“垂直”变量,而不是表的列!

代码语言:javascript
复制
head(res)

SUBSCRIPTION_ID
1 245206318120314                                                                                                                                                                                                                                                
2 235109338101206                                                                                                                                                                                                                                                
3 238463669110624                                                                                                                                                                                                                                                
4 214177015090830                                                                                                                                                                                                                                                
5 212403495090830                                                                                                                                                                                                                                                
6 13874138618090824                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                   SUB_ACCOUNT_ID
1 MV_SUBCTA_45206318_20120316                                                                                                                                                                                                                                    
2 MV_SUBCTA_35109338_20101207                                                                                                                                                                                                                                    
3 MV_SUBCTA_38463669_20110627                                                                                                                                                                                                                                    
4 MV_SUBCTA_45223848_20120316                                                                                                                                                                                                                                    
5 MV_SUBCTA_12403495_20081224                                                                                                                                                                                                                                    
6 MV_SUBCTA_18932919_20091012                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                       ACCOUNT_ID
1 MV_CTA_44123765_20120316                                                                                                                                                                                                                                       
2 MV_CTA_35213277_20101207                                                                                                                                                                                                                                       
3 MV_CTA_37772612_20110627                                                                                                                                                                                                                                       
4 MV_CTA_14217213_20090330                                                                                                                                                                                                                                       
5 MV_CTA_12477560_20081224                                                                                                                                                                                                                                       
6 MV_CTA_18758944_20091012                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                 ACCESS_METHOD_ID
1 1167391804                                                                                                                                                                                                                                                     
2 1159354610                                                                                                                                                                                                                                                     
3 2966407995                                                                                                                                                                                                                                                     
4 1153360304                                                                                                                                                                                                                                                     
5 1131960835                                                                                                                                                                                                                                                     
6 3874138618  

知道怎么解决这个问题吗?我有一个正常工作的ODBC连接,但我更愿意使用JDBC。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-11 14:40:56

我向右滚动输出,看起来您的列中的字符串非常宽(它们是CHAR而不是VARCHAR吗?),因此结果不符合R控制台的宽度。因此R以这种方式显示它们。

所以,要么在查询中修剪它们,要么将它们修剪一下。

代码语言:javascript
复制
select rtrim(SUB_ACCOUNT_ID), ...

或在R:

代码语言:javascript
复制
require('stringr')
res$SUB_ACCOUNT_ID <- str_trim(res$SUB_ACCOUNT_ID)
票数 2
EN

Stack Overflow用户

发布于 2014-03-13 18:33:30

基于亚历克斯的回答,我编写了这个函数,以便在所有变量中使用rtrim。

代码语言:javascript
复制
query_nzz <- function(con, select="select * ", from="", where = "", limit = " 10000; "){
  options(scipen=666)

  # Get variable Names
  query_names = paste(select, " from ",from, where, sep = " ")
  names <- dbGetQuery(con, paste(query_names,"limit 1;", sep= " "))
  names <- names(names)

  # Trim spaces
  select <- paste0("trim(",names,") as ", names, collapse = ",")

  query = paste0("select ", select, " from ", from, where, " limit ",deparse(limit),";")
  data = dbGetQuery(con, query)
  data
}

函数使用

代码语言:javascript
复制
  dt <- query_nzz(
    con,
    select = "select * ",
    from = "DATABASE.TABLENAME",
    where = "",
    limit = 100000
  )
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22302411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档