99 |
|
|
100 |
require_config; |
require_config; |
101 |
|
|
102 |
warn "# reading SQL queries from $sql_dir\n" if $debug; |
warn "SQL queries from $sql_dir\n"; |
103 |
|
|
104 |
opendir(DIR, $sql_dir) || die "can't opendir $sql_dir: $!"; |
opendir(DIR, $sql_dir) || die "can't opendir $sql_dir: $!"; |
105 |
my @sql_files = sort grep { /\.sql$/i && -f "$sql_dir/$_" } readdir(DIR); |
my @sql_files = sort grep { /\.sql$/i && -f "$sql_dir/$_" } readdir(DIR); |
118 |
|
|
119 |
my $date_format = $workbook->add_format(num_format => $xls_date_format); |
my $date_format = $workbook->add_format(num_format => $xls_date_format); |
120 |
|
|
121 |
my $dbh = DBI->connect($dsn . $database,$user,$passwd, { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr; |
our $dbh; |
122 |
|
sub use_database { |
123 |
|
$dbh->disconnect if $dbh; |
124 |
|
my $database = shift || return; |
125 |
|
print STDERR "## connect to $database\n" if $debug; |
126 |
|
$dbh = DBI->connect($dsn . $database,$user,$passwd, { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr; |
127 |
|
if ( $db_encoding ) { |
128 |
|
if ( $dsn =~ m{Pg} ) { |
129 |
|
$dbh->do( qq{ set client_encoding = '$db_encoding'; } ); |
130 |
|
} elsif ( $dsn =~ m{mysql} ) { |
131 |
|
$dbh->do( qq{ set names '$db_encoding'; } ); |
132 |
|
} else { |
133 |
|
warn "Don't know how to set encoding to $db_encoding for $dsn"; |
134 |
|
} |
135 |
|
} |
136 |
|
} |
137 |
|
|
138 |
|
use_database( $database ); |
139 |
|
|
140 |
sub _c { |
sub _c { |
141 |
return shift unless $db_encoding; |
return shift unless $db_encoding; |
161 |
while(<SQL>) { |
while(<SQL>) { |
162 |
chomp; |
chomp; |
163 |
if (/^\\c\s+(\S+)/) { |
if (/^\\c\s+(\S+)/) { |
164 |
$dbh->disconnect if $dbh; |
use_database( $1 ); |
|
print STDERR "## connect to $1\n" if $debug; |
|
|
$dbh = DBI->connect($dsn . $1,$user,$passwd, { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr; |
|
165 |
} elsif (/^--(.+)/) { |
} elsif (/^--(.+)/) { |
166 |
$comment.=$1; |
$comment.=$1; |
167 |
} else { |
} else { |
195 |
|
|
196 |
foreach my $sql ( split(/;/, $full_sql ) ) { |
foreach my $sql ( split(/;/, $full_sql ) ) { |
197 |
|
|
198 |
warn "SQL: $sql\n" if $debug; |
warn "SQL: $sql\n"; |
199 |
|
|
200 |
my $sth = $dbh->prepare($sql); |
my $sth = $dbh->prepare($sql); |
201 |
$sth->execute(); |
$sth->execute(); |