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); |
124 |
my $database = shift || return; |
my $database = shift || return; |
125 |
print STDERR "## connect to $database\n" if $debug; |
print STDERR "## connect to $database\n" if $debug; |
126 |
$dbh = DBI->connect($dsn . $database,$user,$passwd, { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr; |
$dbh = DBI->connect($dsn . $database,$user,$passwd, { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr; |
127 |
$dbh->do( qq{ set names '$db_encoding'; } ) if $db_encoding && $dsn =~ m{mysql}; |
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 ); |
use_database( $database ); |
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(); |
202 |
|
|
203 |
next unless $sth->{NAME}; # $sth->rows doesn't work for insert into with MySQL |
next unless $sth->{NAME} && $sth->rows > 0; # $sth->rows alone doesn't work for insert into with MySQL |
204 |
|
|
205 |
my @types = eval { |
my @types = eval { |
206 |
map { $dbh->type_info($_) ? $dbh->type_info($_)->{TYPE_NAME} : '?' } @{ $sth->{TYPE} }; |
map { $dbh->type_info($_) ? $dbh->type_info($_)->{TYPE_NAME} : '?' } @{ $sth->{TYPE} }; |