Perl 连接 postgresql 例子
麻辣
|
1#
麻辣 发表于 2006-07-17 21:26
Perl 连接 postgresql 例子
Perl 连接 postgresql 例子
###################################################### #PERL-DBI-postgreqll创建,连接 2005 9 postgresql 8.0 linux环境 ###################################################### use DBI; use strict; my $_DB_url=$main::_DB_url;# 地址 my $_DB_port=$main::_DB_port;#端口 my $_DB_usr=$main::_DB_usr;#用户名 my $_DB_pass=$main::_DB_pass;#密码 my $_DB_name=$main::_DB_name;# 数据库名称 my $DRIVERS_HOST_POST="DBI:Pg";#注意这里:数据库接口的表示方法 my %attr=(RaiseError => 0, PrintError => 1, AutoCommit => 1); #\\\---------------------------------------------------------------------\\\# # 函数用途 : 测试数据库环境 # # 所需元素 : ip 用户,密码 端口 # #\\\---------------------------------------------------------------------\\\# sub test_db { my $dbh=DBI->connect("$DRIVERS_HOST_POST:database=template1","$_DB_usr","$_DB_pass") or return 0; #############这里注意,必须链接默认的template1方可通过 return 1; } sub test_db_exists { my $dbh=DBI->connect("$DRIVERS_HOST_POST:database=$_DB_name","$_DB_usr","$_DB_pass") or return 0; $dbh->disconnect; return 1; } #\\\---------------------------------------------------------------------\\\# # 函数用途 : 打开已知数据库连接 # # 所需元素 : # #\\\---------------------------------------------------------------------\\\# sub connect_db { my $dbh=DBI->connect("$DRIVERS_HOST_POST:database=$_DB_name","$_DB_usr","$_DB_pass") or &sql_log(); return $dbh; } #\\\---------------------------------------------------------------------\\\# # 函数用途 : 关闭数据库连接 # # 所需元素 : # #\\\---------------------------------------------------------------------\\\# sub disconnect_db { my $dbh=$_[0]; $dbh->disconnect; return 1; } #\\\---------------------------------------------------------------------\\\# # 函数用途 : 创建新数据库 # # 所需元素 : # #\\\---------------------------------------------------------------------\\\# sub create_db { my $newdb_name=shift;#-----------------要创建的新数据库名 my $dbh=DBI->connect("$DRIVERS_HOST_POST:database=template1","$_DB_usr","$_DB_pass",\%attr) or die "$DBI::errstr";#--地址:端口:,数据库用户名:密码--# #Creater database #############这里注意,必须链接默认的template1方可通过 my $query= "CREATE DATABASE $newdb_name"; my $sth=$dbh->prepare($query) or die $dbh->errstr."<br>"; $sth->execute or die "$dbh->errstr<br>"; $sth->finish; #$dbh->disconnect; return 1; } #\\\---------------------------------------------------------------------\\\# # 函数用途 : 单个建表 # # 所需元素 : # #\\\---------------------------------------------------------------------\\\# sub create_table { my $table_name=shift;#--表名 my $query=shift;#--表结构字符串 #--地址:端口:数据库名,数据库用户名:密码--# my $dbh=DBI->connect("$DRIVERS_HOST_POST:database=$_DB_name","$_DB_usr","$_DB_pass",\%attr) or die "$DBI::errstr<br>"; #Creater table $query= "CREATE TABLE IF NOT EXISTS $table_name $query"; my $sth=$dbh->prepare($query);# or die "Can't CREATE TABLE $_DB_name:$table_name" .$dbh->errstr."<br>"; $sth->execute; $sth->finish; $dbh->disconnect; return 1; } #\\\---------------------------------------------------------------------\\\# # 函数用途 : 批量创建表 # # 所需元素 : # #\\\---------------------------------------------------------------------\\\# sub create_tables { my $_DB_name=$main::_DB_name; my $query; my $creat_info="<br><b> <font color=red>$_DB_type</font> 数据库创建信息: </b><br><br><b>数据库名:<font color=red>$_DB_name</font></b><br><br>"; my $table_name=""; #--地址:端口:数据库名,数据库用户名:密码--# my $dbh=DBI->connect("$DRIVERS_HOST_POST:database=$_DB_name","$_DB_usr","$_DB_pass",\%attr) or die "$DBI::errstr<br>"; open QF, "$cgi_path/sql/$_DB_type/table.txt"; while (defined (my $line = <QF>)) { next if ($line=~/--/); if ($line=~/CREATE TABLE/) { $table_name=$line; $table_name=~s/\(//; } my $isComment = 0; my $isBlankLine = 0; if ($line =~ /^\s*#/) {$isComment = 1} if ($line =~ /^\s*\n/) {$isBlankLine = 1} if (!$isComment and !$isBlankLine) { $query .= " $line"; } if ($line =~ /;\s*(\n|$)/) { $query =~ s/^\s+//; $query =~ s/\s+$//; $query =~ s/(\r|\n)+/ /g; if ($query ne ';') { my $er=0; $dbh->do($query) or $er=1; if ($er ==1) { $creat_info = "$creat_info Can't CREATE TABLE $_DB_name:$table_name" .$dbh->errstr."<br>"; } else { $creat_info = qq($creat_info table:<font color=red>$table_name</font> create successful!<br>); } } $query = ''; } } close QF; return $creat_info; } ######################仅供参考,其它 略
|