2011-06-29 14 views
5

誰もこれで成功しましたか?オンラインで多くの参考文献はなく、私はGoogleで関連するすべての結果を使い果たしました。PerlによるTeradataへの接続

#!/usr/bin/perl 

use DBI; 
use DBD::ODBC; 

$user = "user"; 
$pw = "pw"; 
$ip = "192.168.1.0" 

#DBI->trace(DBD::ODBC->parse_trace_flags('odbconnection')); 

#my $connect_attrs = { PrintError => 0, RaiseError => 1, AutoCommit => 1 }; 

my $dbh = DBI->connect("dbi:ODBC:$ip", $user, $pw); 

エラーメッセージ:

DBI connect('192.168.1.0','user',...) failed: (no error string) at ./teradata.pl line 13 

コメントアウトされている2行はDBに接続するために私の前の無益な試みから残っているここに私のスクリプトです。

UPDATE:ここで私がDBDモジュールで行った前回の取り組みがあります。

#!/usr/bin/perl 

use DBI; 

$user = "xxxx"; 
$pw = "xxxx"; 

my $dbh = DBI->connect("dbi:Teradata:tdsn", $user, $pw); 

エラー:

DBI connect('tdsn','xxxx',...) failed: Unable to get host address. at ./teradata.pl line 12 

第二の試み:

#!/usr/bin/perl 

use DBI; 

$user = "xxxx"; 
$pw = "xxxx"; 

my $dbh = DBI->connect("dbi:Teradata:192.168.1.0", $user, $pw); 

エラー:

DBI connect('192.168.1.0','xxxx',...) failed: Deprecated logons are not allowed by administrator. Upgrade client software to latest version. at ./teradata.pl line 12 

...

#!/usr/bin/perl 

use DBI; 
use DBD::ODBC; 

$user = "xxxx"; 
$pw = "xxxx"; 

my $dbh = DBI->connect("dbi:ODBC:tdsn", $user, $pw); 

の.odbc.ini

[ODBC] 
InstallDir    = /usr/odbc 
Trace   = 0 
TraceDll    = /usr/odbc/lib/odbctrac.so 
TraceFile    = /home/xxxx/odbctrace.log 
TraceAutoStop   = 0 

[ODBC Data Sources] 
default   = tdata.so 
testdsn   = tdata.so 

[default] 
Driver   = /usr/odbc/drivers/tdata.so 
Description    = Default DSN is Teradata 5100 
DBCName   = **ip_addr** 
LastUser    = DLPStats 
Username    = xxxx 
Password    = xxxx 
Database    = MSS_TEMP 
DefaultDatabase   = MSS_TEMP 

[tdsn] 
Driver=/usr/odbc/drivers/tdata.so 
Description=Teradata running Teradata V1R5.2 
DBCName=**ip_addr** 
LastUser= 
Username=xxxx 
Password=xxxx 
Database= 
DefaultDatabase= 

エラー:

あなたは Teradata DBDモジュールをダウンロードしてインストールする必要があります

ODBCINST.INI

[ODBC DRIVERS] 
Teradata=Installed 

[Teradata] 
Driver=/usr/odbc/drivers/tdata.so 
APILevel=CORE 
ConnectFunctions=YYY 
DriverODBCVer=3.51 
SQLLevel=1 
+0

DBIモジュールはTeradataのインターフェイスを提供していますか?代わりに 'DBD :: Teradata'モジュールを使用してください – Rahul

+0

私はこれを試みましたが、そのモジュールはTeradataの私のバージョンでは古くなっています。非推奨のログオン資格情報についてはエラーが表示されます。 – SemperFly

+0

まあ、私はちょっとグーグルで、ほとんどの人がTeradataのDBIまたはDBD :: ODBCでsucesfullではないことがわかりました。もう1つお勧めしたいのは、Teradataクライアントに付属のTeradata ODBCドライバを試してみて、それがパスできるかどうかを確認してください。 – Rahul

答えて

4

+0

私はすでにそのモジュールとの接続を試みました。私はスクリプトとエラーメッセージを追加します。 – SemperFly

1

$ ipにはIPアドレスを使用できません。これは、ODBCドライバ・マネージャに知られているODBCデータ・ソースの名前である必要があります。私たちはあなたのドライバーマネージャーを知る必要があります。それがunixODBCであると仮定すると、ドライバ共有オブジェクトを指す行でteradataドライバの名前を付ける必要があるodbcinst.iniファイルがあります。次に、odbc.iniファイルでデータ・ソースを作成します。

+0

昨日これを調べました。私は私のポストに追加情報を追加しました。 – SemperFly

+0

iODBCドライバマネージャを使用していると思います(そのiniファイルから)。私がunixODBCを使用しているので、私の専門分野は本当にありません。しかし、あなたのファイルから "tdsn"が正しいDSNであると言いたいので、DBI文字列は "dbi:ODBC:tdsn"にする必要があります。それが動作しない場合、DBI_TRACE = 15 = x.logをエクスポートし、 "DBI-> trace(DBD :: ODBC-> parse_trace_flags( 'odbcconnection | odbcunicode'));"接続する前にコードを実行した後、x.logにあるものを見てみましょう。 – bohica

関連する問題