Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 24475075

Von Holger Lindemann vor fast 16 Jahren hinzugefügt

  • ID 24475075172336ae3300c48ec146f9fdb9127886
  • Vorgänger c9fe9e1c
  • Nachfolger 247a0189

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.

Unterschiede anzeigen:

lxo-import/blz.php
22 22
}
23 23
require ("import_lib.php");
24 24

  
25
function l2u($str) {
26
	return iconv("ISO-8859-1", "UTF-8",$str);
27
}
28

  
25 29
if (!anmelden()) ende(5);
26 30
/* get DB instance */
27 31
$db=$_SESSION["db"]; //new myDB($login);
......
29 33

  
30 34
/* display help */
31 35
if ($_POST["ok"]=="Hilfe") {
32
	echo "Importfelder:<br>";
33
	echo "Feldname => Bedeutung<br>";
34
	foreach($parts as $key=>$val) {
35
		echo "$key => $val<br>";
36
	}
37 36
	echo "<br>Die erste Zeile enth&auml;lt keine Feldnamen der Daten.<br>";
38 37
	echo "Die Datenfelder haben eine feste Breite.<br><br>"; 
39 38
	echo "Die Daten k&ouml;nnen hier bezogen werden:<br>";
......
62 61

  
63 62
	$sqlins="INSERT INTO blz_data (blz,fuehrend,bezeichnung,plz,ort,kurzbez,pan,bic,pzbm,nummer,aekz,bl,folgeblz) ";
64 63
	$sqlins.="VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s',%d,'%s','%s','%s')";
65
	$sqldel="delete from blz";
64
	$teststr="<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%d</td><td>%s</td><td>%s</td><td>%s</td></tr>\n";
65
	$sqldel="delete from blz_data";
66 66
	$ok="true";
67
	$cnt=0;
67 68
	$f=fopen("blz.txt","r");
68
	if ($test) echo "Testdurchlauf <br>";
69
	if ($test) echo "Testdurchlauf <br><table>\n";
69 70
	$i=0;
71
	$start=time();
72
	$rs = $db->getAll("SELECT current_setting('server_encoding')");
73
	$srvencoding = $rs[0]['current_setting'];
74
	$rs = $db->getAll("SELECT current_setting('client_encoding')");
75
	$cliencoding = $rs[0]['current_setting'];
76
	echo "SRV: $srvencoding - - CLI: $cliencoding<br>";
77
	//Datenfile ist immer Latin!!
78
	//zwei Möglichkeiten der Zeichenwandlung. Was ist besser??
70 79
	if ($f) {
71
		if (!$test) $rc=$db->query("BEGIN");
80
		//Cliententcoding nicht umstellen:
81
		//if (!$test) { $rc=$db->query("BEGIN");};
82
		//Cliententcoding auf Latin:
83
		if (!$test) { $rc=$db->query("BEGIN"); if ($cliencoding=="UTF8") $db->query("SET CLIENT_ENCODING TO 'latin-9'"); };
72 84
		if (!$test) $rc=$db->query($sqldel);
73 85
		while (($zeile=fgets($f,256)) != FALSE) {
74
			$sql=sprintf($sqlins,substr($zeile,0,8),substr($zeile,8,1),substr($zeile,9,58),substr($zeile,67,5),
86
			$cnt++;
87
			if (!$test) {
88
				//Client nicht umgestellt, Zeichen wandeln
89
				/*$sql=sprintf($sqlins,substr($zeile,0,8),substr($zeile,8,1),l2u(substr($zeile,9,58)),substr($zeile,67,5),
90
						l2u(substr($zeile,72,35)),l2u(substr($zeile,107,27)),substr($zeile,134,5),substr($zeile,139,11),
91
						substr($zeile,150,2),substr($zeile,152,6),substr($zeile,158,1),substr($zeile,159,1),
92
						substr($zeile,160,8));*/
93
				//Client umgestellt + und auch bei nicht UTF-Client:
94
				$sql=sprintf($sqlins,substr($zeile,0,8),substr($zeile,8,1),substr($zeile,9,58),substr($zeile,67,5),
75 95
						substr($zeile,72,35),substr($zeile,107,27),substr($zeile,134,5),substr($zeile,139,11),
76 96
						substr($zeile,150,2),substr($zeile,152,6),substr($zeile,158,1),substr($zeile,159,1),
77 97
						substr($zeile,160,8));
78
			if (!$test) $rc=$db->query($sql);
79
			if ($test) $rc=true;
80
			echo $rc;
98
				$rc=$db->query($sql);
99
				if ($cnt % 10 == 0) { 
100
					if ($cnt % 1000 == 0) { $x=time()-$start; echo sprintf("%dsec %6d<br>",$x,$cnt); }
101
					else if ($cnt % 100 == 0) { echo "!"; }
102
					else { echo '.'; }
103
					flush(); 
104
				}
105
			} else {
106
				echo sprintf($teststr,substr($zeile,0,8),substr($zeile,8,1),l2u(substr($zeile,9,58)),substr($zeile,67,5),
107
                                                l2u(substr($zeile,72,35)),l2u(substr($zeile,107,27)),substr($zeile,134,5),substr($zeile,139,11),
108
                                                substr($zeile,150,2),substr($zeile,152,6),substr($zeile,158,1),substr($zeile,159,1),
109
                                                substr($zeile,160,8));
110
				$rc=true;
111
			}
81 112
			if (!$rc) { 
82 113
				$ok=false;
83 114
				break;
......
86 117
		}
87 118
		if ($ok) {
88 119
			$rc=$db->query("COMMIT");
89
			echo "$i Daten erfolgreich importiert";
120
			echo "<br>$i Daten erfolgreich importierti<br>";
121
			if ($cliencoding=="UTF8") $db->query("SET CLIENT_ENCODING TO 'UTF8'");
122
			$stop=time();
123
			echo $stop-$start." Sekunden";
90 124
		} else {
91 125
			$rc=$db->query("ROLLBACK");
92 126
			ende(6);
......
94 128
	} else {
95 129
		ende(4);
96 130
	}
131
	echo "</table>";
97 132
} else {
98 133
?>
99 134

  

Auch abrufbar als: Unified diff