From 24475075172336ae3300c48ec146f9fdb9127886 Mon Sep 17 00:00:00 2001 From: Holger Lindemann Date: Fri, 13 Mar 2009 07:46:57 +0000 Subject: [PATCH] =?utf8?q?blz.txt=20kommt=20im=20latin.=20darf=20nicht=20g?= =?utf8?q?ewandelt=20werden,=20da=20sonst=20die=20bytegenaue=20breite=20ni?= =?utf8?q?cht=20gew=C3=A4hrleistet=20wird.=20db=20fragen=20welche=20codier?= =?utf8?q?ung=20vorhanden=20und=20ggf.=20client=20auf=20latin=20umstellen?= =?utf8?q?=20f=C3=BCr=20den=20import.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- lxo-import/blz.php | 61 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 48 insertions(+), 13 deletions(-) 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 { ?> -- 2.20.1