Chris Coulthurst
2005-Jun-10 14:47 UTC
[Asterisk-Users] Convert extensions.conf INTO MySQL script
I swear I read somewhere on one of the MANY pages that there is a script out there that can read the extensions.conf file and create the MySQL DB records on the fly. Anyone know where I look for such a thing? Sure speeds up migration! Chris Coulthurst chris@shuksan.com
Matthew Boehm
2005-Jun-10 15:37 UTC
[Asterisk-Users] Convert extensions.conf INTO MySQL script
Chris Coulthurst wrote:> I swear I read somewhere on one of the MANY pages that there is a script out > there that can read the extensions.conf file and create the MySQL DB records > on the fly. Anyone know where I look for such a thing? > > > Sure speeds up migration! > > Chris Coulthurst > chris@shuksan.comThat will be $10. Please pull up to the next window. #!/usr/bin/perl -w // originally downloaded from http://www.bkw.org/load.txt // // coding by pfn // use DBI; use strict; use POSIX; if (@ARGV != 1) { print STDERR "Usage: load_res_config <ast_config_file>\n"; exit 1; } open(CONFIG_FILE, "<$ARGV[0]") || die $!; my @lines; my $cat_metric = -1; # incremented to 0 on first hit my $var_metric = -1; my $category; while (<CONFIG_FILE>) { my $line = $_; chop($line); my($var_name, $var_val); next if ($line =~ /^\s*;/); # comment line skip if ($line =~ /^\s*\[(.*?)\]/) { $category = $1; $var_metric = -1; $cat_metric++; } elsif ($line =~ /^\s*(\w+)\s*=>\s*(.+)\s*;?.*$/ || $line =~ /^\s*(\w+)\s*=\s*(.+)\s*;?.*$/) { $var_metric++; $var_name = $1; $var_val = $2; } else { next; # no match, skip } if ($var_metric >= 0) { my %hash = ('cat_metric' => $cat_metric, 'var_metric' => $var_metric, 'category' => $category, 'var_name' => $var_name, 'var_val' => $var_val); push(@lines, \%hash); } } close(CONFIG_FILE); my $dbh; $dbh = DBI->connect("dbi:mysql:dbname=asterisk", "root", "asdf") || die $DBI::errstr; foreach my $row (@lines) { print "$row->{'cat_metric'}\t$row->{'category'}\t$row->{'var_metric'}\t$row->{'var_name'}\t$row->{'var_val'}\n"; my $sth = $dbh->prepare("INSERT into ast_config (filename, cat_metric, var_metric, category, var_name, var_val) values (?, ?, ?, ?, ?, ?)"); $sth->bind_param(1, $ARGV[0]); $sth->bind_param(2, $row->{'cat_metric'}); $sth->bind_param(3, $row->{'var_metric'}); $sth->bind_param(4, $row->{'category'}); $sth->bind_param(5, $row->{'var_name'}); $sth->bind_param(6, $row->{'var_val'}); $sth->execute(); warn $sth->errstr if $sth->errstr; } $dbh->disconnect;