3 |
$| = 1; |
$| = 1; |
4 |
|
|
5 |
my $debug = 0; |
my $debug = 0; |
6 |
my $raise = 1; |
my $raise = 0; |
7 |
my $log = "log"; |
my $log = "log"; |
8 |
my $xbase = "./registar"; |
my $xbase = "./registar"; |
9 |
my $db = "registar"; |
my $db = "registar"; |
10 |
|
my $refresh_timeout = 10; |
11 |
|
|
12 |
open(LOG, ">$log") || die "can't open log: $!"; |
open(LOG, ">$log") || die "can't open log: $!"; |
13 |
|
|
16 |
{ 'RaiseError' => $raise }) || die $DBI::errstr; |
{ 'RaiseError' => $raise }) || die $DBI::errstr; |
17 |
my $pgdbh = DBI->connect("DBI:Pg:dbname=$db", "dpavlin", "", |
my $pgdbh = DBI->connect("DBI:Pg:dbname=$db", "dpavlin", "", |
18 |
{ 'RaiseError' => $raise }) || die $DBI::errstr; |
{ 'RaiseError' => $raise }) || die $DBI::errstr; |
19 |
# $SIG{'__WARN__'} = sub { }; # inhibit DBI warnings. |
$SIG{'__WARN__'} = sub { }; # inhibit DBI warnings. |
20 |
|
|
21 |
my @tables = (); |
my @tables = (); |
22 |
if (@ARGV > 0) { |
if (@ARGV > 0) { |
80 |
return "$msg\n"; |
return "$msg\n"; |
81 |
} |
} |
82 |
|
|
83 |
|
sub CondInsert { |
84 |
|
my ($table, $name, $key, $fields, $values) = @_; |
85 |
|
my $sql = "SELECT $name FROM $table WHERE ($name = $key)"; |
86 |
|
my $cnt = $pgdbh->do($sql); |
87 |
|
return 0 if ($cnt > 0); |
88 |
|
$sql = "INSERT INTO $table $fields VALUES $values"; |
89 |
|
return $pgdbh->do($sql); |
90 |
|
} |
91 |
|
|
92 |
sub tblATK { |
sub tblATK { |
93 |
my ($table, $fields, $data) = @_; |
my ($table, $fields, $data) = @_; |
94 |
my $count = 0; |
my $count = 0; |
111 |
$tmp ||= 0; |
$tmp ||= 0; |
112 |
$tmp = 0 if ($tmp < 0); |
$tmp = 0 if ($tmp < 0); |
113 |
$count += $tmp; |
$count += $tmp; |
114 |
if (++$refresh >= 20) { |
if (++$refresh >= $refresh_timeout) { |
115 |
$refresh = 0; |
$refresh = 0; |
116 |
print Progress($count, scalar(@$data)); |
print Progress($count, scalar(@$data)); |
117 |
} |
} |
149 |
} |
} |
150 |
$tmp = 0 if ($tmp < 0); |
$tmp = 0 if ($tmp < 0); |
151 |
$count += $tmp; |
$count += $tmp; |
152 |
if (++$refresh >= 20) { |
if (++$refresh >= $refresh_timeout) { |
153 |
$refresh = 0; |
$refresh = 0; |
154 |
print Progress($count, scalar(@$data)); |
print Progress($count, scalar(@$data)); |
155 |
} |
} |
191 |
$tel = &ConvertString($tel); |
$tel = &ConvertString($tel); |
192 |
$fax = &ConvertString($fax); |
$fax = &ConvertString($fax); |
193 |
my $tmp = $sth->execute($sifra, $naziv, $drzava, |
my $tmp = $sth->execute($sifra, $naziv, $drzava, |
194 |
$zastupnistvo, $zip, $mjesto, $ulica_i_broj, |
$zastupnistvo, $mjesto, $zip, $ulica_i_broj, |
195 |
$razno, $tel, $fax); |
$razno, $tel, $fax); |
196 |
unless (defined($tmp)) { |
unless (defined($tmp)) { |
197 |
print &Log("[$table-execute] ".$pgdbh->errstr); |
print &Log("[$table-execute] ".$pgdbh->errstr); |
199 |
} |
} |
200 |
$tmp = 0 if ($tmp < 0); |
$tmp = 0 if ($tmp < 0); |
201 |
$count += $tmp; |
$count += $tmp; |
202 |
if (++$refresh >= 20) { |
if (++$refresh >= $refresh_timeout) { |
203 |
$refresh = 0; |
$refresh = 0; |
204 |
print Progress($count, scalar(@$data)); |
print Progress($count, scalar(@$data)); |
205 |
} |
} |
206 |
} |
} |
207 |
$sth->finish(); |
$sth->finish(); |
208 |
return 0; |
return $count; |
209 |
} |
} |
210 |
|
|
211 |
sub tblVodeca { |
sub tblVodeca { |
212 |
my ($table, $fields, $data) = @_; |
my ($table, $fields, $data) = @_; |
213 |
my $count = 0; |
my $count = 0; |
|
my $sth = $pgdbh->prepare("INSERT INTO vodeca (sifra, naziv) VALUES (?, ?)"); |
|
|
unless ($sth) { |
|
|
print &Log("[$table-prepare] ".$pgdbh->errstr); |
|
|
return 0; |
|
|
} |
|
214 |
my $refresh = 0; |
my $refresh = 0; |
215 |
foreach my $row (@$data) { |
foreach my $row (@$data) { |
216 |
my ($sifra, $naziv) = @$row; |
my ($sifra, $naziv) = @$row; |
217 |
|
$sifra =~ s/^(..)//; |
218 |
|
my $code = $1; |
219 |
|
$sifra = &ConvertString($sifra); |
220 |
$naziv = &ConvertString($naziv); |
$naziv = &ConvertString($naziv); |
221 |
$drzava = &ConvertString($drzava); |
my $tmp = 0; |
222 |
$zastupnistvo = &ConvertString($zastupnistvo); |
if ($code eq "06") { |
223 |
$zip = &ConvertString($zip); |
$tmp += CondInsert("nacin_izdavanja", "sifra", $sifra, |
224 |
$mjesto = &ConvertString($mjesto); |
"(sifra, opis)", "($sifra, $naziv)"); |
225 |
$ulica_i_broj = &ConvertString($ulica_i_broj); |
} elsif ($code eq "07") { |
226 |
$razno = &ConvertString($razno); |
$tmp += CondInsert("list_fond", "sifra", $sifra, |
227 |
$tel = &ConvertString($tel); |
"(sifra, opis)", "($sifra, $naziv)"); |
228 |
$fax = &ConvertString($fax); |
} elsif ($code eq "08") { |
229 |
my $tmp = $sth->execute($sifra, $naziv, $drzava, |
$tmp += CondInsert("trudnoca", "sifra", $sifra, |
230 |
$zastupnistvo, $zip, $mjesto, $ulica_i_broj, |
"(sifra, opis)", "($sifra, $naziv)"); |
231 |
$razno, $tel, $fax); |
} elsif ($code eq "09") { |
232 |
unless (defined($tmp)) { |
$tmp += CondInsert("dojencad", "sifra", $sifra, |
233 |
print &Log("[$table-execute] ".$pgdbh->errstr); |
"(sifra, opis)", "($sifra, $naziv)"); |
234 |
next; |
} elsif ($code eq "10") { |
235 |
|
$tmp += CondInsert("vozac", "sifra", $sifra, |
236 |
|
"(sifra, opis)", "($sifra, $naziv)"); |
237 |
|
} elsif ($code eq "11") { |
238 |
|
$tmp += CondInsert("droga", "sifra", $sifra, |
239 |
|
"(sifra, opis)", "($sifra, $naziv)"); |
240 |
|
} else { |
241 |
|
# UNKNOWN CODE!!! |
242 |
|
print &Log("[WARNING: unknown code \"$code\"]"); |
243 |
} |
} |
244 |
$tmp = 0 if ($tmp < 0); |
$tmp = 0 if ($tmp < 0); |
245 |
$count += $tmp; |
$count += $tmp; |
246 |
if (++$refresh >= 20) { |
if (++$refresh >= $refresh_timeout) { |
247 |
$refresh = 0; |
$refresh = 0; |
248 |
print Progress($count, scalar(@$data)); |
print Progress($count, scalar(@$data)); |
249 |
} |
} |
250 |
} |
} |
251 |
$sth->finish(); |
return $count; |
|
# ... |
|
|
return 0; |
|
252 |
} |
} |
253 |
|
|
254 |
my (%dbf) = ( |
my (%dbf) = ( |
308 |
close(LOG); |
close(LOG); |
309 |
$xbdbh->disconnect(); |
$xbdbh->disconnect(); |
310 |
$pgdbh->disconnect(); |
$pgdbh->disconnect(); |
311 |
print "Log left in file \"$log\"\n"; |
print "Log left in file \"$log\".\n"; |
312 |
exit $?; |
exit $?; |