我正在尝试从 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语句。
这确实是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中的最佳方法。相反,最好在移动数据之前应用所有必需的转换和筛选器。