2017-07-31 61 views
0

我試圖從R中的HANA數據庫導入一個非常大的數據集。RJDBC包的一個問題是所有包含字符的列都作爲字符列加載類型。在我們的例子中,加載列作爲一個因子會更有效率,因爲只有少數幾個唯一值。是否可以在RJDBC調用中定義某個col類,並在哪裏進行類轉換?在R中使用RJDBC記錄數據時定義列類

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

在documantation https://www.rforge.net/RJDBC/他們談論DBML:如果轉換到因子HANA進行,因爲這將減少必須被運送到R. 示例代碼GB的數量將是巨大的需要的陳述。

回答

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.取而代之的是最好的辦法,所有必需的轉換和過濾器在移動數據之前,最好應用。