2011-06-29 30 views
5

Có ai đã thành công với điều này không? Không có nhiều tài liệu tham khảo trực tuyến và tôi đã cạn kiệt mọi kết quả có liên quan trên Google. Đây là kịch bản của tôi:Kết nối với Teradata qua 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); 

Các thông báo lỗi:

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

Hai dòng được nhận xét ra là còn sót lại từ những nỗ lực không kết quả trước đây của tôi để kết nối với DB.

CẬP NHẬT: Dưới đây là những nỗ lực trước đây tôi đã thực hiện với mô-đun DBD.

#!/usr/bin/perl 

use DBI; 

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

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

Lỗi:

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

Second Attempt:

#!/usr/bin/perl 

use DBI; 

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

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

Lỗi:

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 

thứ ba ...

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

Lỗi:

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

mô-đun DBI có cung cấp giao diện cho Teradata không? Sử dụng mô-đun 'DBD :: Teradata' thay vì – Rahul

+0

Tôi đã cố gắng nhưng mô-đun này đã lỗi thời cho phiên bản Teradata của tôi. Cung cấp cho tôi một lỗi về thông tin đăng nhập không được chấp nhận. – SemperFly

+0

Vâng, tôi chỉ googled một chút và thấy rằng hầu như tất cả mọi người đã không sucesfull với DBI OR DBD :: ODBC cho Teradata. Một trong nhiều tôi có thể đề nghị là ... thử với trình điều khiển Teradata ODBC mà đi kèm với khách hàng Teradata và xem nếu nó cho phép bạn đi qua – Rahul

Trả lời

4

Bạn sẽ cần phải tải về và cài đặt các module Teradata DBD.

+0

Tôi đã thử kết nối với mô-đun đó; Tôi sẽ nối thêm tập lệnh và thông báo lỗi. – SemperFly

1

$ ip không thể là địa chỉ IP. Nó cần phải là tên của một nguồn dữ liệu ODBC được biết đến với trình quản lý trình điều khiển ODBC của bạn. Chúng tôi cần biết người quản lý tài xế của bạn để trợ giúp thêm. Giả sử nó là unixODBC, bạn sẽ có một tệp odbcinst.ini trình điều khiển siêu dữ liệu cần phải được đặt tên bằng một dòng trỏ đến đối tượng được chia sẻ trình điều khiển. Sau đó, trong tệp odbc.ini bạn tạo nguồn dữ liệu.

+0

Đã tìm ra điều này hôm qua. Tôi đã thêm thông tin bổ sung vào bài đăng của mình. – SemperFly

+0

Vì vậy, tôi đoán (từ những tập tin ini) bạn đang sử dụng trình quản lý trình điều khiển iODBC? Không phải lĩnh vực chuyên môn của tôi thực sự là tôi sử dụng unixODBC. Tuy nhiên, tôi muốn nói từ các tập tin của bạn "tdsn" là DSN chính xác để sử dụng vì vậy chuỗi DBI cần phải được "dbi: ODBC: tdsn". Nếu điều đó không làm việc thiết lập và xuất DBI_TRACE = 15 = x.log và thêm "theo dõi DBI-> (DBD :: ODBC-> parse_trace_flags ('odbcconnection | odbcunicode'));" trước khi cuộc gọi kết nối. Chúng ta hãy xem những gì có trong x.log sau khi bạn chạy mã. – bohica