DBD-RAM
view release on metacpan or search on metacpan
my $next=0;
for my $table(@tables) {
if ($table =~ /^table(\d+)/ ) {
$next = $1 if $1 > $next;
}
}
$next++;
return("table$next");
}
sub export() {
my $dbh = shift;
my $args = shift || die "No arguments for export()\n";
my $msg = "export() requires ";
my $sql = $args->{data_source} || die $msg . '{data_source => $}';
my $f_name = $args->{data_target} || die 'export requires {data_target => $f}';
my $f_type = $args->{data_type} || die 'export requires {data_type => $d}';
if ($f_type eq 'XML') { return &export_xml($dbh,$args); }
my $temp_table = 'temp__';
$dbh->func( [[$temp_table,$f_type,$f_name,$args]],'catalog');
my $sth1 = $dbh->prepare($sql);
$sth1->execute or die $DBI::errstr;
my @col_names = @{$sth1->{NAME}};
my $sth2 = &prep_insert( $dbh, $temp_table, @col_names );
while (my @row = $sth1->fetchrow_array) {
$sth2->execute(@row);
}
delete $DBD::RAM::ramdata->{catalog}{$temp_table};
}
sub export_xml() {
my $dbh = shift;
my $args = shift;
my $msg = "Export to XML requires ";
my $sql = $args->{data_source} || die $msg . '{data_source => $}';
my $f_name = $args->{data_target} || die $msg . '{data_target => $f}';
my $f_type = $args->{data_type} || die $msg . '{data_type => $d}';
my $record_tag = $args->{record_tag} || die $msg . '{record_tag => $r}';
my $header = $args->{header} || '';
my($head,$item,$foot) = &prep_xml_export($header,$record_tag);
$f_name = $dbh->{f_dir} . '/' .$f_name;
my $terminal_tag = pop @tag_starts;
my @tag_ends = map("</$_>\n",reverse @tag_starts);
@tag_starts = map("<$_>\n",@tag_starts);
for (@tag_starts) { $header .= $_; }
#print " <$terminal_tag>\n";
my $footer;
for (@tag_ends) { $footer .= $_; }
return($header,$terminal_tag,$footer);
}
sub convert() {
my $dbh = shift;
my $specs = shift;
my $source_type = $specs->{source_type} || '';
my $source_file = $specs->{source_file} || '';
my $source_params = $specs->{source_params} || '';
my $target_type = $specs->{target_type} || '';
my $target_file = $specs->{target_file} || '';
my $temp_table = 'temp__';
my($dbh2,$sth1);
$dbh->func( [
$sth1->execute;
my @col_names = @{$sth1->{NAME}};
my $sth2 = &prep_insert( $dbh, "${temp_table}2", @col_names );
while (my @row = $sth1->fetchrow_array) {
$sth2->execute(@row);
}
if ($source_type eq 'DBI' ) { $dbh2->disconnect; }
}
sub import() {
my $dbh = shift;
my $specs = shift;
my $data = shift;
if ($specs && ! $data ) {
if (ref $specs eq 'ARRAY' ) {
$data = $specs; $specs = {};
}
else {
$data = [];
}
( run in 0.737 second using v1.01-cache-2.11-cpan-65fba6d93b7 )