2017-11-02 20 views
0

FreeTDS 및 unixODBC를 설치 및 구성하고 제대로 작동하는지 확인한 후 RODBC를 구성하려고합니다. 그러나 R 콘솔에서 ODBC 데이터 원본을 보려고 할 때 다음과 같은 결과가 나타납니다.unixODBC를 사용하도록 RODBC를 설치하려면 어떻게해야합니까?

> odbcDataSources() 
named character(0) 

FreeTDS 드라이버를 사용하려고하면 다음과 같은 결과가 발생합니다.

>odbcDriverConnect("driver={FreeTDS};server=xx.xx.xx.xx;port=1433;database=XXXX_Analysis;trusted_connection=true;UID=********;PWD=********") : 
[RODBC] ERROR: state IM003, code 0, message [iODBC][Driver Manager]Specified driver could not be loaded 

오류에 따라 RODBC가 unixODBC 대신 iODBC를 사용하려고 시도하는 것처럼 보입니다. unixODBC를 사용하도록 RODBC를 구성하는 방법을 모르겠습니다.

답변

0

기본 RODBC 패키지 설치가 해제되어 unixODBC와 함께 설치되지 않습니다. 다음은 RODBC를 다시 컴파일하고 설치하는 프로세스입니다.

  1. R 콘솔을 통해 현재 일반 RODBC 패키지를 제거하십시오.

  2. RODBC의 소스를 다운로드하십시오.

    https://cran.r-project.org/src/contrib/RODBC_1.3-15.tar.gz

  3. 당신 인 unixODBC 라이브러리가있는 위치로 환경 변수 DYLD_LIBRARY_PATH를 설정합니다. 내 홈 라이브러리가/usr/local/lib에 있기 때문에 homebrew를 사용하여 unixODBC를 설치했습니다. 이 새로운 라이브러리의 위치를 ​​집어 있도록

    export DYLD_LIBRARY_PATH=/usr/local/lib

  4. 지금 RODB를 다시 설치합니다.

    R CMD INSTALL /Users/xxxxxx/Downloads/RODBC_1.3-15.tar.gz

이 출력의 아주 조금이지만 끝으로보고이 같은 것을 볼 수

.

clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o RODBC.so RODBC.o -lodbc -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation 
    installing to /Library/Frameworks/R.framework/Versions/3.4/Resources/library/RODBC/libs 
    ** R 
    ** inst 
    ** preparing package for lazy loading 
    ** help 
    *** installing help indices 
    ** building package indices 
    ** installing vignettes 
    ** testing if installed package can be loaded 
    * DONE (RODBC) 

라이브러리 위치가 선택되었음을 나타내는 -L/usr/local/lib에 주목하십시오.

이제 unixODBC에서 제공하는 ODBC 연결을 볼 수 있습니다. 다시 시작한 R 콘솔에서 다음을 입력하여 RODBC가 unixODBC를 사용하는지 확인하십시오. 바른 길에 나를 넣어 돕는 hiltmon

> library("RODBC") 
> odbcDataSources() 
     MYMSSQL1  MYMSSQL XXXXXXXXX_C_DB XXXXXXXX-SQL1 
    "FreeTDS"  "FreeTDS"  "FreeTDS"  "FreeTDS" 

감사합니다.