X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/8468c353d00846c241dd17f9bd3aa9052f7b1cd2..e20f3f0dac8c4b362af0e6594de9581d05d0f6c4:/lxo-import/blz.php diff --git a/lxo-import/blz.php b/lxo-import/blz.php index 86639be23..506ae393e 100644 --- a/lxo-import/blz.php +++ b/lxo-import/blz.php @@ -22,6 +22,10 @@ if (!$_SESSION["db"]) { } require ("import_lib.php"); +function l2u($str) { + return iconv("ISO-8859-1", "UTF-8",$str); +} + if (!anmelden()) ende(5); /* get DB instance */ $db=$_SESSION["db"]; //new myDB($login); @@ -29,11 +33,6 @@ $db=$_SESSION["db"]; //new myDB($login); /* display help */ if ($_POST["ok"]=="Hilfe") { - echo "Importfelder:
"; - echo "Feldname => Bedeutung
"; - foreach($parts as $key=>$val) { - echo "$key => $val
"; - } echo "
Die erste Zeile enthält keine Feldnamen der Daten.
"; echo "Die Datenfelder haben eine feste Breite.

"; echo "Die Daten können hier bezogen werden:
"; @@ -62,22 +61,54 @@ if ($_POST["ok"]=="Hilfe") { $sqlins="INSERT INTO blz_data (blz,fuehrend,bezeichnung,plz,ort,kurzbez,pan,bic,pzbm,nummer,aekz,bl,folgeblz) "; $sqlins.="VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s',%d,'%s','%s','%s')"; - $sqldel="delete from blz"; + $teststr="%s%s%s%s%s%s%s%s%s%d%s%s%s\n"; + $sqldel="delete from blz_data"; $ok="true"; + $cnt=0; $f=fopen("blz.txt","r"); - if ($test) echo "Testdurchlauf
"; + if ($test) echo "Testdurchlauf
\n"; $i=0; + $start=time(); + $rs = $db->getAll("SELECT current_setting('server_encoding')"); + $srvencoding = $rs[0]['current_setting']; + $rs = $db->getAll("SELECT current_setting('client_encoding')"); + $cliencoding = $rs[0]['current_setting']; + echo "SRV: $srvencoding - - CLI: $cliencoding
"; + //Datenfile ist immer Latin!! + //zwei Möglichkeiten der Zeichenwandlung. Was ist besser?? if ($f) { - if (!$test) $rc=$db->query("BEGIN"); + //Cliententcoding nicht umstellen: + //if (!$test) { $rc=$db->query("BEGIN");}; + //Cliententcoding auf Latin: + if (!$test) { $rc=$db->query("BEGIN"); if ($cliencoding=="UTF8") $db->query("SET CLIENT_ENCODING TO 'latin-9'"); }; if (!$test) $rc=$db->query($sqldel); while (($zeile=fgets($f,256)) != FALSE) { - $sql=sprintf($sqlins,substr($zeile,0,8),substr($zeile,8,1),substr($zeile,9,58),substr($zeile,67,5), + $cnt++; + if (!$test) { + //Client nicht umgestellt, Zeichen wandeln + /*$sql=sprintf($sqlins,substr($zeile,0,8),substr($zeile,8,1),l2u(substr($zeile,9,58)),substr($zeile,67,5), + l2u(substr($zeile,72,35)),l2u(substr($zeile,107,27)),substr($zeile,134,5),substr($zeile,139,11), + substr($zeile,150,2),substr($zeile,152,6),substr($zeile,158,1),substr($zeile,159,1), + substr($zeile,160,8));*/ + //Client umgestellt + und auch bei nicht UTF-Client: + $sql=sprintf($sqlins,substr($zeile,0,8),substr($zeile,8,1),substr($zeile,9,58),substr($zeile,67,5), substr($zeile,72,35),substr($zeile,107,27),substr($zeile,134,5),substr($zeile,139,11), substr($zeile,150,2),substr($zeile,152,6),substr($zeile,158,1),substr($zeile,159,1), substr($zeile,160,8)); - if (!$test) $rc=$db->query($sql); - if ($test) $rc=true; - echo $rc; + $rc=$db->query($sql); + if ($cnt % 10 == 0) { + if ($cnt % 1000 == 0) { $x=time()-$start; echo sprintf("%dsec %6d
",$x,$cnt); } + else if ($cnt % 100 == 0) { echo "!"; } + else { echo '.'; } + flush(); + } + } else { + echo sprintf($teststr,substr($zeile,0,8),substr($zeile,8,1),l2u(substr($zeile,9,58)),substr($zeile,67,5), + l2u(substr($zeile,72,35)),l2u(substr($zeile,107,27)),substr($zeile,134,5),substr($zeile,139,11), + substr($zeile,150,2),substr($zeile,152,6),substr($zeile,158,1),substr($zeile,159,1), + substr($zeile,160,8)); + $rc=true; + } if (!$rc) { $ok=false; break; @@ -86,7 +117,10 @@ if ($_POST["ok"]=="Hilfe") { } if ($ok) { $rc=$db->query("COMMIT"); - echo "$i Daten erfolgreich importiert"; + echo "
$i Daten erfolgreich importierti
"; + if ($cliencoding=="UTF8") $db->query("SET CLIENT_ENCODING TO 'UTF8'"); + $stop=time(); + echo $stop-$start." Sekunden"; } else { $rc=$db->query("ROLLBACK"); ende(6); @@ -94,6 +128,7 @@ if ($_POST["ok"]=="Hilfe") { } else { ende(4); } + echo "
"; } else { ?>