2011-06-29 22 views
5

¿Alguien ha tenido éxito con esto? No hay una gran cantidad de referencias en línea y he agotado todos los resultados relevantes en Google. Aquí está mi script:Conectando a Teradata a través de 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); 

El mensaje de error:

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

Las dos líneas que se comentan a cabo son de sobra de mis intentos infructuosos anteriores para conectar a la base de datos.

ACTUALIZACIÓN: Estos son los esfuerzos anteriores que hice con el módulo DBD.

#!/usr/bin/perl 

use DBI; 

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

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

error:

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

segundo intento:

#!/usr/bin/perl 

use DBI; 

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

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

error:

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 

Tercer ...

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

error:

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

¿El módulo DBI proporciona la interfaz para Teradata? Use el módulo 'DBD :: Teradata' en su lugar – Rahul

+0

He intentado esto pero ese módulo está desactualizado para mi versión de Teradata. Me da un error sobre las credenciales de inicio de sesión en desuso. – SemperFly

+0

Bueno, solo busqué en Google un poco y descubrí que casi todos no tenían una completa sucesión con DBI O DBD :: ODBC para Teradata. Una más que puedo sugerir es que ... intente con el controlador ODBC de Teradata que viene con el cliente Teradata y vea si le permite pasar por – Rahul

Respuesta

4

Usted tendrá que descargar e instalar el módulo Teradata DBD.

+0

Ya he intentado conectar con ese módulo; Adjuntaré la secuencia de comandos y el mensaje de error. – SemperFly

1

$ ip no puede ser una dirección IP. Debe ser el nombre de una fuente de datos ODBC conocida por su administrador de controladores ODBC. Necesitaríamos conocer a su administrador de controladores para ayudar aún más. Suponiendo que es unixODBC, tendrá un archivo odbcinst.ini que el controlador de teradata debe tener un nombre con una línea que apunta al objeto compartido del controlador. Luego, en el archivo odbc.ini crea una fuente de datos.

+0

se dio cuenta de esto ayer. Agregué información adicional a mi publicación. – SemperFly

+0

Supongo que (de esos archivos ini) está utilizando el administrador de controladores iODBC? No es mi área de especialización realmente ya que uso unixODBC. Sin embargo, yo diría que desde sus archivos "tdsn" es el DSN correcto para usar, por lo que la cadena DBI debe ser "dbi: ODBC: tdsn". Si eso no funciona, configure y exporte DBI_TRACE = 15 = x.log y agregue "DBI-> trace (DBD :: ODBC-> parse_trace_flags ('odbcconnection | odbcunicode'));" antes de la llamada para conectarse. Veamos qué hay en x.log después de ejecutar el código. – bohica