2011-06-29 3 views
5

Est-ce que quelqu'un a eu du succès avec ça? Il n'y a pas beaucoup de références en ligne et j'ai épuisé tous les résultats pertinents sur Google. Voici mon script:Connexion à Teradata via Perl

#!/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); 

Le message d'erreur:

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

Les deux lignes qui sont commentées à des restes de mes tentatives infructueuses précédentes pour connecter à la DB.

MISE À JOUR: Voici les efforts précédents que j'ai faits avec le module DBD.

#!/usr/bin/perl 

use DBI; 

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

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

Erreur:

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

Deuxième tentative:

#!/usr/bin/perl 

use DBI; 

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

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

Erreur:

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 

troisième ...

#!/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= 

Erreur:

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

odbcinst.ini

[ODBC DRIVERS] 
Teradata=Installed 

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

Le module DBI fournit-il une interface pour Teradata? Utilisez le module 'DBD :: Teradata' à la place – Rahul

+0

J'ai déjà essayé mais ce module est obsolète pour ma version de Teradata. Me donne une erreur à propos des informations d'identification obsolètes. – SemperFly

+0

Eh bien, je ai juste googlé un peu et a constaté que presque tout le monde n'était pas réussi avec DBI OU DBD :: ODBC pour Teradata. Un autre que je peux suggérer est que ... essayez avec le pilote Teradata ODBC qui vient avec le client Teradata et voyez s'il vous permet de passer par – Rahul

Répondre

4

Vous devez télécharger et installer le module Teradata DBD.

+0

J'ai déjà essayé de me connecter avec ce module; Je vais ajouter le script et le message d'erreur. – SemperFly

1

$ ip ne peut pas être une adresse IP. Il doit être le nom d'une source de données ODBC connue de votre gestionnaire de pilotes ODBC. Nous aurions besoin de connaître votre gestionnaire de pilotes pour l'aider davantage. En supposant que ce soit unixODBC, vous aurez un fichier odbcinst.ini dans lequel le pilote teradata doit être nommé avec une ligne pointant vers l'objet partagé du pilote. Ensuite, dans le fichier odbc.ini, vous créez une source de données.

+0

Compris cela hier. J'ai ajouté des informations supplémentaires à mon message. – SemperFly

+0

Donc je suppose (à partir de ces fichiers ini) que vous utilisez le gestionnaire de pilotes iODBC? Pas vraiment mon domaine d'expertise car j'utilise unixODBC. Cependant, je dirais que de vos fichiers "tdsn" est le bon DSN à utiliser, donc la chaîne DBI doit être "dbi: ODBC: tdsn". Si cela ne fonctionne pas et que vous exportez DBI_TRACE = 15 = x.log, ajoutez "DBI-> trace (DBD :: ODBC-> parse_trace_flags ('odbcconnection | odbcunicode'));" avant l'appel à se connecter. Voyons ce qu'il y a dans x.log après avoir exécuté le code. – bohica