Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use DBI;
- use warnings;
- use strict;
- use autodie;
- use Term::ANSIColor qw(:constants);
- # User-changable variables
- my $database = "db_name";
- my $table = "schema.table";
- my $db_driver = "Pg";
- my $username = "postgres";
- my $password = "password";
- my $dbh = open_db($database, $table, $username, $password, $db_driver);
- # close_db($dbh, $table); # Case #1
- close_db($dbh); # Case #2
- ##############################################################
- sub close_db { # Disconnect the database
- # my $dbh = $_[0]; # Case #1
- my $dbh = @_; # Case #2
- $dbh->disconnect() or die RED, "ERROR: The database could not be disconnected.\n $DBI::errstr\n Stopped$!";
- print "INFO: The database has been closed successfully.\n";
- return;
- }
- sub open_db {
- # Variables
- my $database; my $table; my $host = ""; my $user; my $port = ""; my $password; my $db_driver;
- my $dsn; my $dbh; my $sth;
- if (scalar(@_) == 5) {
- # Database name
- $database = "$_[0]";
- # Table name and optionally schema name
- $table = "$_[1]";
- # User, host and port
- if ("$_[2]" =~ /.*@.*/) {
- if ("$_[2]" =~ /.*:.*/) {
- # User name
- $user = "$_[2]";
- $user =~ s/^([^@]*).*$/$1/;
- # Host name
- $host = "$_[2]";
- $host =~ s/^[^@]*@([^:]*).*$/$1/;
- # Port
- $port = "$_[2]";
- $port =~ s/^[^:]*:(.*)$/$1/;
- } else {
- # User name
- $user = "$_[2]";
- $user =~ s/^([^@]*).*$/$1/;
- # Host name
- $host = "$_[2]";
- $host =~ s/^[^@]*@([^:]*).*$/$1/;
- }
- } else {
- # User name
- $user = "$_[2]";
- $user =~ s/^([^@]*).*$/$1/;
- }
- # Password
- $password = "$_[3]";
- # DB db_driver
- $db_driver = "$_[4]";
- } else {
- die RED, "ERROR: You have to supply database name, table name, user\@host:port, password and the database db_driver.\n Stopped$!";
- }
- if ("$port" eq ""){
- if ("$host" eq ""){
- $dsn = "DBI:$db_driver:dbname = $database";
- } else {
- $dsn = "DBI:$db_driver:dbname = $database; host = $host";
- }
- } else {
- $dsn = "DBI:$db_driver:dbname = $database; host = $host; port = $port";
- }
- $dbh = DBI->connect($dsn, $user, $password, { RaiseError => 1 }) or die RED, "ERROR: The database could not be opened.\n $DBI::errstr\n Stopped$!";
- print "INFO: The database has been opened successfully.\n";
- return $dbh;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement