From: Holger Lindemann Date: Fri, 13 Mar 2009 07:46:57 +0000 (+0000) Subject: blz.txt kommt im latin. darf nicht gewandelt werden, da sonst die bytegenaue breite... X-Git-Tag: release-2.6.0beta2~139 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=24475075172336ae3300c48ec146f9fdb9127886;p=kivitendo-erp.git blz.txt kommt im latin. darf nicht gewandelt werden, da sonst die bytegenaue breite nicht gewährleistet wird. db fragen welche codierung vorhanden und ggf. client auf latin umstellen für den import. --- 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 { ?>