ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

perl DBI动态切换连接数据源

2021-11-17 21:03:09  阅读:239  来源: 互联网

标签:DBI odbc 数据源 driver perl host ODBC my


参考连接

  1. DBD:ODBC
  2. SQL_SERVER
  3. DBD-ODBC下载地址

perl DBI动态切换连接数据源

一 如下方式连接数据库

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]);
    }
}

二 指定驱动名称方式:SQL Server

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

三 动态切换ip

终端输入 env,查看odbc.ini所在的路径

查看odbc.ini是否配置了如名为Teradata,并指定了drvier的路径,如

[Teradata]

driver=/opt/xxx/xx.so

此处可以driver名称可以使用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 $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);    
    #}     
}

标签:DBI,odbc,数据源,driver,perl,host,ODBC,my
来源: https://blog.csdn.net/u010895512/article/details/121387064

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有