2016-09-30 5 views
0

ORACLE SQl 데이터베이스에 액세스하기 위해 기본 SAS와 RODBC를 R로 비교.RODBC를 사용하여 수천 회의 관찰 결과 손실

오라클 SQL 데이터베이스에 액세스하려고합니다. 이 코드와 SAS에서 이것을 실행하는 경우 :이 코드를 실행하면

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

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

, 나는 내가 무엇을 기대 인 153,777 관찰을 얻을.

그런 다음 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 *와 같은 args로 재생하십시오. 쿼리 호출을 통해'sqlTable()'을 시도해보십시오. [RODBC 문서] (https://cran.r-project.org/web/packages/RODBC/RODBC.pdf)의 18 페이지를 참조하십시오. – Parfait

+0

커다란 텍스트 필드가 그 주범이었습니다. 정말 고마워요. – dncrwlye

답변

0

데이터베이스에 연결하기 위해 DBI 패키지로 실행되는 ROracle 패키지로 테스트하여 문제를 해결할 수 있습니다. 내가 테스트 할 오라클 데이터베이스에 액세스 할 수 있지만 두 번째 패키지를 시도하면 데이터베이스 인터페이스 또는 다른 문제와 함께 문제를 알려드립니다.

오라클은 ROracle을 유지 관리하는 것으로 보이므로 잘 지원되는 것으로 보입니다. 나는 을 사용하여 MySQL (RMySQL) 및 SQLite (RSQLite) 데이터베이스와 인터페이스했으며, 매우 큰 데이터 세트를 반환하는 데 문제가 없었습니다.

0

아빠가 옳았습니다. 문제는 긴 문자열이 포함 된 '의견 섹션'열입니다. 그 칼럼을 가져 오지 않으면 나는 기대했던 모든 행을 얻었습니다.