138 lines
2.9 KiB
Perl
138 lines
2.9 KiB
Perl
use strict;
|
|
use File::Slurp qw(:std);
|
|
use IO::Handle;
|
|
use File::Path qw(make_path);
|
|
use Data::Printer;
|
|
|
|
my $datei = 'admin.sql';
|
|
|
|
my @lines = read_file($datei);
|
|
|
|
write_file('admin2.sql', '');
|
|
|
|
|
|
my %spalten;
|
|
my $spaltenbestimmen = 0;
|
|
my $inserts = 0;
|
|
my $ignoreline = 0;
|
|
my $noreturn = 0;
|
|
|
|
for my $l ( @lines ) {
|
|
$noreturn = 0;
|
|
chomp($l);
|
|
if ( $l =~ /CREATE INDEX|CREATE UNIQUE/ ) {
|
|
$ignoreline = 1;
|
|
}
|
|
|
|
if ( $l eq "/" ) {
|
|
$inserts = 0;
|
|
}
|
|
|
|
if ( $inserts == 1 ) {
|
|
$l =~ s/" "/""/g;
|
|
$l =~ s/" /"/g;
|
|
$l =~ s/ "/"/g;
|
|
$l =~ s/'/\\'/g;
|
|
$l =~ s/,,,/,NULL,NULL,/g;
|
|
$l =~ s/,,/,NULL,/g;
|
|
$l =~ s/^,"/NULL,"/g;
|
|
$l = $l =~ s/,$//r;
|
|
$l = "($l),";
|
|
}
|
|
|
|
$l =~ s/~ME~/Ä/g;
|
|
$l =~ s/~NM~/Ü/g;
|
|
$l =~ s/~NG~/Ö/g;
|
|
$l =~ s/~OE~/ä/g;
|
|
$l =~ s/~PM~/ü/g;
|
|
$l =~ s/~PG~/ö/g;
|
|
$l =~ s/~NP~/ß/g;
|
|
$l =~ s/~ANAK~/\\n/g;
|
|
$l =~ s/ä/ä/g;
|
|
$l =~ s/~LF~/\\/g;
|
|
$l =~ s/ü/ü/g;
|
|
$l =~ s/ö/ö/g;
|
|
|
|
$l =~ s/"\\n"/""/g;
|
|
|
|
# if ( $l =~ /~..~/ ) {
|
|
# p $l;
|
|
# }
|
|
|
|
$l =~ s/\$long/""/g;
|
|
|
|
next if ( $l =~ /SET LOADVERSION|PCTFREE|^\\|~/ );
|
|
next if ( $l eq '/' );
|
|
|
|
|
|
if ( $l =~ /\$DATATYPES/ ) {
|
|
$l = "VALUES";
|
|
$inserts = 1;
|
|
}
|
|
|
|
if ( $l =~ /INSERT INTO/ ) {
|
|
$noreturn = 1;
|
|
$l = $l =~ s/VALUES//r;
|
|
$spaltenbestimmen = 0;
|
|
}
|
|
|
|
if ( $spaltenbestimmen > 0 ) {
|
|
if ( $l =~ /\)$/ ) {
|
|
$l = "$l;\n";
|
|
};
|
|
|
|
my @sp = split(/ /, $l);
|
|
|
|
$spalten{$spaltenbestimmen}= $sp[2];
|
|
$spaltenbestimmen += 1;
|
|
}
|
|
|
|
for my $z ( 0 .. 20 ) {
|
|
if ( $l =~ / :$z/ ) {
|
|
# print "$z $spalten{$z}\n";
|
|
$noreturn = 1;
|
|
$l = $l =~ s/:$z/$spalten{$z}/r;
|
|
}
|
|
}
|
|
|
|
if ( $l =~ /CREATE TABLE/ ) {
|
|
# p $l;
|
|
my $tabname = $l =~ s/CREATE TABLE SYSADM.//r;
|
|
$tabname =~ s/ \(//;
|
|
|
|
$l = "DROP TABLE IF EXISTS `$tabname`;\n" . $l;
|
|
p $l;
|
|
|
|
$l = $l =~ s/CREATE TABLE/CREATE TABLE IF NOT EXISTS/r;
|
|
$spaltenbestimmen = 1;
|
|
#if ( $l =~ /SYSADM.TEL_ALIASES|SYSADM.DATEIEN|SYSADM.PC_NET|SYSADM.PC_LOGIN|SYSADM.MMAC|SYSADM.PC_FILE|SYSADM.PC_RPRN|SYSADM.INV_INI|SYSADM.PC_KARTEN|SYSADM.HD_LOESUNG|SYSADM.HD_STICHWORT|SYSADM.HD_MELDG|SYSADM.TEL_TELEFON|SYSADM.TEL_NAMEN|SYSADM.PROXYMAILLOG/ ) {
|
|
if ( $l =~ /SYSADM.CX_/ ) {
|
|
if ( $l =~ /CX_IPOLD/ ) {
|
|
$ignoreline = 1;
|
|
} else {
|
|
$ignoreline = 0;
|
|
}
|
|
} else {
|
|
$ignoreline = 1;
|
|
}
|
|
}
|
|
if ( $ignoreline == 1 ) {
|
|
next;
|
|
};
|
|
|
|
next if ( $l eq '(//),' );
|
|
|
|
$l =~ s/SYSADM.//g;
|
|
append_file("admin2.sql", $l.( $noreturn == 1 ? "": "\n") );
|
|
}
|
|
|
|
my $lin = read_file("admin2.sql");
|
|
|
|
$lin =~ s/\),\nDROP/\);\n\nDROP/g; #
|
|
$lin =~ s/, OBJ0/, I2/g;
|
|
$lin =~ s/\),$/\);/;
|
|
|
|
write_file('cx.sql', $lin);
|
|
|
|
1;
|