【问题标题】:Define column class when data is impoted using RJDBC in R在 R 中使用 RJDBC 导入数据时定义列类
【发布时间】:2017-07-31 08:24:22
【问题描述】:
我正在尝试从 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 语句。
【问题讨论】:
标签:
r
import
hana
rjdbc
dbml
【解决方案1】:
这确实是 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 的最佳方法。相反,最好在移动数据之前应用所有必需的转换和过滤器。