Olli1967: Text einlesen, verändern und in eine Datenbank speichern.

Beitrag lesen

Hallo Tom,

danke für deine Unterstützung, aber das Zerlegen und in die Datenbank drücken das funktioniert bei mir schon.

Mein Script:

  
  
<?php  
$datei = file("G:/xampp/htdocs/Kartonwege/Daten_Source/neu/neu.txt");  
$dateiR = "G:/xampp/htdocs/Kartonwege/Daten_Destination/file.csv";  
$fp = fopen($dateiR,"w");  
$i=0;  
foreach($datei AS $ausgabe) {  
   $ausgabe = strtr($ausgabe, ":", ",");  
   $ausgabe = str_replace("<-", ",<-", $ausgabe);  
   $ausgabe = str_replace("S->", ",S->", $ausgabe);  
   $ausgabe = str_replace("<S", "S", $ausgabe);  
   $ausgabe = str_replace("<M", "M", $ausgabe);  
   $ausgabe = str_replace(" SP", ",SP", $ausgabe);  
   $ausgabe = str_replace(" TCP", ",TCP", $ausgabe);  
   $ausgabe = str_replace("*>", "*", $ausgabe);  
   $ergebnis = trim ($ausgabe);  
   $zerlegen = explode(",", $ergebnis);  
   $zeile=implode(',',$zerlegen)."\n";  
   fputs($fp,$zeile);  
}  
  
fputs($fp,$data); # daten in datei speichern  
   $i++;  
  
fclose($fp);  
echo "fertig";  
  
$db = mysqli_connect("localhost","root","start","","3306") or die("Keine Verbindung zur Datenbank!");  
  
$datum = date("Y-m-d");  
  
//Eine Datenbank, mit dem aktuellen Datum als Bezeichnung, wird erstellt  
  
$sql = "CREATE DATABASE `telegramme`";  
  
$ergebnis=mysqli_query($db, $sql);  
  
//Zur aktuellen(eben erstellten) Datenbank connecten  
  
$db = mysqli_connect("localhost","root","start","telegramme","3306") or die("Keine Verbindung zur neuen Datenbank!");  
  
//Tabelle wird erstellt  
  
$tabelle_erstellen="CREATE TABLE  `daten` (  
  
  `Wochentag` varchar(2)collate latin1_general_ci NOT NULL,  
  `Datum` varchar(16)collate latin1_general_ci NOT NULL,  
  `Zeit` varchar(12) collate latin1_general_ci NOT NULL,  
  `Melder` varchar(10) collate latin1_general_ci NOT NULL,  
  `Richtung` varchar(4) NOT NULL,  
  `Daten` varchar(50) NOT NULL,  
  
  PRIMARY KEY  (`Datum`,`Zeit`)  
) ENGINE=MyISAM DEFAULT CHARSET=latin1";  
  
  
$ergebnis=mysqli_query($db, $tabelle_erstellen);  
  
//Der von der Batchdatei erstellte Flatfile wird geöffnet und als Variable eingelesen.  
  
$statistik = 'G:/xampp/htdocs/Kartonwege/Daten_Destination/file.csv';  
$fp = fopen ( $statistik, 'r' );  
  
//Die Variable wird hier in sein Bestandteile zerlegt, neu zusammengefügt und anschliessend in die Datenbank geschrieben.  
  
while (!feof($fp))  
{  
	$ipteiler = fgets($fp);  
	list($t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8, $t9) = explode(",", $ipteiler);  
	  
	$ins = ("replace into telegramme.`daten`  
	values('".$t1."','".$t2."','".$t3.":".$t4.":".$t5.":".$t6."','".$t7."','".$t8."','".$t9."');");  
	echo ".";  
	  
$ergebnis=mysqli_query($db, $ins);  
  	}  
  
// Hier ist das Script durchgelaufen  
	  
  echo 'beendet';  
  
fclose($fp);  
  
?>  
  

Das Script läuft pro Datei 489kb = ungefair 5500 Zeilen in unter 5 sek. durch.

Die Frage die ich als Laie habe ist, wie kann ich eine Datei nach der anderen einlesen und Verarbeiten? Ich weiß nicht wie man eine Schleife macht die nacheinander Datei für Datei in einem Ordner einliest.
Weil bei dem Versuch alles in einer Datei einzulesen macht PHP dicke Backen.

Zu deiner Frage Payload kommt im Anschluss folgendes:
díe Telegramme kommen von einer Fördertechnik die Kartons befördert. das Telegramm (bei dir PAYLOAD genannt) ist immer genau 50 Zeichen lang. Es beinhaltet unter anderem die Kartonnummer (8stellig), Platzhalter (*), Gewichte Tara und Brutto, und an welchen Übergangspunkten der Karton vorbei gerauscht ist. Es sind Telegramme zwischen dem MFR (Materialflussrechner) und den SPS en.

ich danke dir nochmal im vorraus für die Hilfe.

Gruß Olaf