my $date_format = $workbook->add_format(num_format => $xls_date_format);
-my $dbh = DBI->connect($dsn . $database,$user,$passwd, { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr;
+our $dbh;
+sub use_database {
+ $dbh->disconnect if $dbh;
+ my $database = shift || return;
+ print STDERR "## connect to $database\n" if $debug;
+ $dbh = DBI->connect($dsn . $database,$user,$passwd, { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr;
+ $dbh->do( qq{ set names '$db_encoding'; } ) if $db_encoding && $dsn =~ m{mysql};
+}
+
+use_database( $database );
sub _c {
return shift unless $db_encoding;
while(<SQL>) {
chomp;
if (/^\\c\s+(\S+)/) {
- $dbh->disconnect if $dbh;
- print STDERR "## connect to $1\n" if $debug;
- $dbh = DBI->connect($dsn . $1,$user,$passwd, { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr;
+ use_database( $1 );
} elsif (/^--(.+)/) {
$comment.=$1;
} else {