3 # Copyright 2020 Koha Development Team
5 # This file is part of Koha.
7 # Koha is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
12 # Koha is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with Koha; if not, see <http://www.gnu.org/licenses>.
22 use YAML
::Syck
qw( LoadFile );
24 use Getopt
::Long
qw(:config no_ignore_case);
28 ( my $basename = $0 ) =~ s
|.*/||;
32 Load file in YAML format into database
38 -f, --file=FILE File to load.
39 -h, --help Show this help
51 ) or print_usage
, exit 1;
53 if ($help or not $file) {
58 my $dbh = C4
::Context
->dbh;
61 $yaml = LoadFile
( $file ); # Load YAML
64 die "Something went wrong loading file $file ($@)";
67 for my $table ( @
{ $yaml->{'tables'} } ) {
68 my $table_name = ( keys %$table )[0]; # table name
69 my @rows = @
{ $table->{$table_name}->{rows
} }; #
70 my @columns = ( sort keys %{$rows[0]} ); # column names
71 my $fields = join ",", map{sprintf("`%s`", $_)} @columns; # idem, joined
72 my $placeholders = join ",", map { "?" } @columns; # '?,..,?' string
73 my $query = "INSERT INTO $table_name ( $fields ) VALUES ( $placeholders )";
74 my $sth = $dbh->prepare($query);
75 my @multiline = @
{ $table->{$table_name}->{'multiline'} }; # to check multiline values;
76 foreach my $row ( @rows ) {
79 ( @multiline and grep { $_ eq $col } @multiline )
80 ?
join "\r\n", @
{$row->{$col}} # join multiline values
83 $sth->execute( @values );
86 for my $statement ( @
{ $yaml->{'sql_statements'} } ) { # extra SQL statements