2017-03-23 26 views
1

RODBC経由でRをTeradataに接続しようとすると問題が発生します。RはRODBC経由でTeradat ODBC接続に接続できません

私のシステム:Ubuntu 14.04; Teradata 14.10; ODBCドライバ16.0。 R 3.3.3; RStudio 1.0.136

私はODBCドライバをテストしました。これはうまく動作しています(私はTeradataにSQL経由で接続し、/ tdxodbc64を使ってテストしました)。問題なくクエリを実行できます。私は経由してRで同じことをしようとした

しかし、:

Warning messages: 
1: In RODBC::odbcDriverConnect("DSN=MY_DSN_NAME;UID=MY_USER;PWD=MY_PASS", : 
[RODBC] ERROR: state tU, code 0, message �������������������� 
2: In RODBC::odbcDriverConnect("DSN=MY_DSN_NAME;UID=MY_USER;PWD=MY_PASS", : 
ODBC connection failed 

私はRで利用可能なデータソースを確認した場合、私はこの情報を取得:

library('RODBC') 
channel <- odbcConnect(dsn="MY_DSN_NAME",uid="MY_USER",pwd="MY_PASS") 

私はこれを取得

odbcDataSources() 
LADW_V01    testdsn 
"Teradata ODBC Driver"    "tdata.so" 

アドバイスは本当にうまくいくでしょう。 ありがとうございます。

答えて

0

これは私がTeradata DWに接続するために使用するものです。 RMarkdownでもハードコーディングパスワードなしでうまく動作します。 代わりに、Windowsデータベース管理者から資格情報を取得します。

注:私はあなたがLinuxを実行している気づいコードの下には、* .Rmdファイル

```{R} 
# Unfortunately, odbc is not on CRAN yet 
# So we will need devtools 
# install.packages(devtools) 
devtools::install_github("rstats-db/odbc") 

# Get connection info from Windows ODBC Data Source Administrator 
# Using the name you set manually 
con <- dbConnect(odbc::odbc(), 'Your_Data_Warehouse_Name') 
``` 

```{sql connection = con, output.var = result} 
-- This is sql code, comments need to be marked accordingly 
SELECT TOP 10 * FROM My_Table 
``` 

```{R} 
# And the result is available in the next chunk! 
result 
```` 

のアップデートです。私はまだLinux VM上にこれを設定していないので、私は経験から話すことができません。しかし、パッケージの作者がLinuxシステムで同等のアプローチに、次のinformationを与える:

のMacOS/Linuxの

のMacOSやLinuxでは を編集する必要がある2つの別々のテキストファイルがあります。 UnixODBCには、 を使用してDSNファイルのクエリと変更を行うコマンドライン実行可能なodbcinstが含まれています。しかし、これらは普通のテキストファイルです あなたは手で編集することもできます。

DSN情報を設定するために2つの異なるファイルが使用されています。 - ODBCINST.INI - どのドライバオプション定義 - ODBC.INI - しばしば/etc/odbc.iniで、 システムのすべてのユーザーに対してグローバルに定義することができる 接続オプション

DSN構成ファイルを定義/又はopt/local/etc/odbc.iniの場合、正確な場所は unixODBCのコンパイル時に使用されたオプションによって異なります。 odbcinst -jを使用すると、正確な場所を見つけることができます。 また、ODBCSYSINI環境変数を使用して、 に構成ファイルの場所を指定することもできます。 Ex。 ODBCSYSINI =〜/ ODBC

ローカルDSNファイルは、〜/ .odbc.iniファイルと 〜/ .odbcinst.iniファイルでも使用できます。

odbcinst。ini

ドライバ情報、特にドライバ名 が含まれています。同じファイルに複数のドライバを指定することができます。 = /usr/local/lib/libsqlite3odbc.dylib ODBC.INI

[PostgreSQLのドライバー]ドライバー= /usr/local/lib/psqlodbcw.so

[SQLiteのドライバー]ドライバー接続が含まれ情報、特にユーザー名、パスワード、 データベースとホスト情報Driver行は、odbcinst.iniで定義されている ドライバに対応しています。

[PostgreSQLの]ドライバー= PostgreSQLのドライバデータベース
= TEST_DBサーバー名= localhostのユーザー名= postgresのパスワード=パスワードポート= 5432

[SQLiteの]ドライバー=のSQLiteドライバデータベース=を/ tmp /テストも を参照してください。unixODBCのをGUIと詳細については、例を参照してください。

+0

ubuntuシェルではTeradataにうまく接続できますが、R/RODBCやpythonではうまく接続できないので、問題は他の場所だと思います...私がRstudioでubuntuシェルを開いても、問題はありません。 – COLO

+0

はい、 'RODBC'パッケージの代わりに' rstats-db/odbc'パッケージを使用しています: – JanLauGe

+0

RODBCに固執したい場合の別の方法です: 'library (RODBC); db < - odbcDriverConnect( "ドライバ= Teradata; DBCName = YourDB; UID = YourUserName; PWD = YourPassword"); データ< - sqlQuery(db、 "SELECT TOP 10 * FROM SOME_TABLE;"); odbcClose(db) ' – JanLauGe

関連する問題