Perl DBI alterna dinamicamente fontes de dados de conexão

conexão de referência

  1. DBD:ODBC
  2. SERVIDOR SQL
  3. Endereço de download DBD-ODBC

Perl DBI alterna dinamicamente fontes de dados de conexão

Conecte-se ao banco de dados da seguinte maneira

Conteúdo parcial do arquivo odbc.ini
[ODBC]
...
...
[mydsn]
driver=/opt/xxx/xx.so
...
...

sub dbi_connect
{
    # mydsn需配置,查看odbc.ini里面配置的名称,如为mydsn
    my $DSN="mydsn";
    my $user="testuser";
    my $pass="shure123";
    my $dbh = DBI->connect("dbi:ODBC:$DSN", $user, $pass,
          { RaiseError => 1, odbc_cursortype => 2});
    my $sth = $dbh->prepare("one statement");
    my $sth2 = $dbh->prepare("two statement");
    $sth->execute;
    my @row;
    while (@row = $sth->fetchrow_array) {
       $sth2->execute($row[0]);
    }
}

Duas maneiras de especificar o nome do driver: SQL Server

my $h = DBI->connect('dbi:ODBC:DRIVER={SQL Server}', “username”, “password”,
{odbc_driver_complete => 1});

Três ip de comutação dinâmica

Digite env no terminal para visualizar o caminho onde odbc.ini está localizado

Verifique se odbc.ini está configurado com o nome Teradata e especifique o caminho do drvier, como

[Teradata]

driver=/opt/xxx/xx.so

O nome do driver pode ser usado aqui para usar o Teradata

sub dynamicConnect
{
    my ($user,$pwd,$IP)=@_;
    # 若指定端口可以设置host格式为$host='ip,port',当前这里不指定端口
    my $host=$IP;
    my $driver='DBI:ODBC:Driver={Teradata}';
    #my $dbc='DBCName=AAA';
    my $dbc='DBCName=ip地址';
    my $db='Database=';
    my $defaultDB='DefaultDatabase=';
    my $myDSN="$driver;$host;$dbc";
    # 或者$myDSN="$driver;$host;$dbc;$db;LastUser=;Username=;Password=;$defaultDB";
    my $dh = DBI->connect(myDSN, $user, $pwd, {AutoCommit=>1,PrintError=>1,RaiseError=>0});
    #unless(defined($dh)) {
        #sleep(30);    
    #}     
}

Se o DBCName de odbc.ini for XXX
, configure: 'DBCName=XXX'
caso contrário, configure 'DBCName=ip address'

Acho que você gosta

Origin blog.csdn.net/u010895512/article/details/121387064
Recomendado
Clasificación