2016-09-30 16 views
0

比較R中的基本SAS和RODBC以訪問ORACLE SQl數據庫。使用RODBC丟棄數千個觀測值

我想訪問一個ORACLE SQL數據庫。如果我運行這個在SAS與此代碼:

LIBNAME LIBNAME ORACLE SCHEMA=SCHEMA PATH="*****"; 

PROC SQL ; 
CREATE TABLE work.eval_view AS 
SELECT * 
    FROM LIBNAME.VW_EVALUATION 
    ORDER BY ***** ; 
QUIT; 

如果我運行這段代碼,我得到153777組的意見,這正是我所期望的。

然後我想在R中運行此代碼。我正在使用RODBC庫。這是我運行的代碼:

connect <- odbcConnect(dsn='****', rows_at_time =1, believeNRows=FALSE) 

evaluation <- sqlQuery(connect, "SELECT * FROM ****.vw_evaluation") 

但是我得到了4239個觀測值。進來的實際觀測結果與SAS進行的觀測結果相同,只是大部分觀測結果缺失。

如果我改變rows_at_time輸入,我改變了我得到的觀測量。 100一次得到我10219個觀測值,110每次得到我的觀測值較少,只有10120個觀測值。

有沒有人有任何建議如何解決這個問題?似乎其他線程中的人建議更改rows_at_time,但這對我來說效果不佳。

+1

你的桌子有多寬,你有很大的文本字段?這會影響內存分配。嘗試選擇幾列。考慮在'sqlQuery()'(這兩者的包裝)上使用'odbcQuery()'和'sqlGetResults()'。玩像* believeNRows *和* max = 0 *的參數。即使在查詢調用中嘗試使用sqlTable()。請參閱[RODBC文檔]的第18頁(https://cran.r-project.org/web/packages/RODBC/RODBC.pdf)。 – Parfait

+0

大文本字段是罪魁禍首,非常感謝。 – dncrwlye

回答

0

我將通過與運行DBI程序包的ROracle程序包進行測試來進行故障排除,以連接到數據庫。我無法訪問Oracle數據庫進行測試,但嘗試第二個軟件包會讓您知道與數據庫接口或其他問題有關的問題。

請注意,ROracle似乎由Oracle本身維護,所以希望得到很好的支持。我已經使用DBI相當多的接口與MySQL(RMySQL)和SQLite(RSQLite)數據庫接口,並且沒有問題返回非常大的數據集。

0

冰糕是對的!問題是包含長字符串的「註釋部分」列。一旦這個列沒有被導入,我得到了我期望的所有行。