+ if ( $params{ 'restore' } ) {
+ my $fh = $q->upload('upfile');
+ my $xml = read_file( $fh );
+ my $tpp = XML::TreePP->new;
+ my $tree = $tpp->parse( $xml );
+ my @rows = @{ $tree->{database}->{select}->{row} };
+
+ # 高速化のためVALUESを連結
+ # INSERT INTO timeline ( ... ) VALUES ( aa, bb, cc ), ( kk, ll, mm ), ( xx, yy, zz )
+ my @keys = qw/type chtxt title btime etime deltatime deltaday opt counter/;
+ my $keys = join ', ', @keys;
+ my @values;
+
+ foreach my $row ( @rows ) {
+ my $values = join ', ', map { "'".$row->{'-'.$_}."'" } @keys;
+ utf8::decode( $values );
+ push @values, "( $values )";
+ }
+ my $sql = "INSERT INTO timeline ( $keys ) VALUES " . join ', ', @values;
+ $dbh->do( "TRUNCATE TABLE timeline" );
+ $dbh->do( $sql );
+ goto end;
+ }
+