使用R中的RJDBC对数据进行插入时定义列类

时间:2017-07-31 08:24:23

标签: r import hana rjdbc dbml

我正在尝试从R中的HANA数据库导入一个非常大的数据集.RJDBC程序包的一个问题是所有带字符的列都被加载为字符列类型。在我们的情况下,将列作为因子加载会更有效,因为只有少数唯一值。是否可以在RJDBC调用中定义col类的某个位置以及执行col类转换的位置?如果转换为因子在HANA中执行会很好,因为它会减少必须传输到R的GB的数量。 示例代码:

dbFetch(dbSendQuery(conn = hana_connection, statement = 'select CHAR_COL FROM TABLE_NAME'))

在文档https://www.rforge.net/RJDBC/上,他们讨论的是所需的DBML语句。

1 个答案:

答案 0 :(得分:0)

这真的是RJDBC的问题。 使用RODBC读取字符值作为因素工作正常(并且易于实现)。

ch<-odbcConnect("S12")
fact<-sqlQuery (ch, 'SELECT TOP 50 \'x\'||DIM10 as CHARCOL from FACT order by DIM10  asc') 
str(fact)
odbcClose(ch)

 str(fact)
'data.frame':   50 obs. of  1 variable:
 $ CHARCOL: Factor w/ 1 level "x0": 1 1 1 1 1 1 1 1 1 1 ...

除此之外,它通常不是将大量数据从HANA转换为R的最佳方法。相反,在移动数据之前,最好应用所有必需的转换和过滤器。