*.txt -> SQL, Idee gesucht
SteBu
- php
Moin,
das Thema ist etwas unglücklich gewählt, aber ich versuche es mal zu erklären. Ich habe ein Projekt übernommen welches bis dato Flatfiles aus Datenspeicher benutzte. Jetzt soll es auf MySql umgestellt werden. Der alte Datenbestand soll übernommen werden ist jedoch für Copy&Paste zuviel. Leider ist das das txt-Format nur annähernd mit xml zu vergleichen. Aufgebaut ist es nach folgendem Muster
!-!-!---Start Datensatz---!-!-!
!-!-!Feld1
Inhalt von Feld 1
!-!-!Feld2
Inhalt von Feld 2
auch mit umbrüchen und Tags<p>
!-!-!---Start Datensatz---!-!-!
!-!-!---Start Datensatz---!-!-!
!-!-!Feld1
Inhalt von Feld 1
!-!-!Feld2
Inhalt von Feld 2
auch mit umbrüchen und Tags<p>
!-!-!---Start Datensatz---!-!-!
u.s.w.
Jetzt suche ich eine elegante Möglichkeit das ganze verwertbar zu machen. Am liebsten in der Form eines Mixed-Arrays, wobei ich nur die Daten brauche und nicht die Feldbezeichner(die werden in der Datenbank eh anders lauten).
Alle Ansätze über brachten nicht ganz den gewünschten Erfolg.
Bisher getestet habe ich es mit:
fgets <- ging nicht, weil die vorhandenen Umbrüche das durcheinander brachten
fscanf <- bin ich gerade am testen,
Mein bestes Resultat hat folgendes Format
Ein Array wo jeder Datensatz als langer String in einer "Zeile" liegt. Alle Feldinhalte darin sind mit einer # getrennt, leider aber auch jeder Zeilenumbruch.
Kann mir bitte mal einer einen Schubs geben.
Danke
SteBu
Ups Fehler drinn. Sorry. Heißt natürlich
!-!-!---Start Datensatz---!-!-!
!-!-!Feld1
Inhalt von Feld 1
!-!-!Feld2
Inhalt von Feld 2
auch mit umbrüchen und Tags<p>
!-!-!---Ende Datensatz---!-!-!
--------^^^^
Hi,
also ich rate dir dazu mal die scripte anzuschauen. weil irgendwie wurde
da ja auch auf die daten zugegriffen. dementsprechend kannst du ja auch
zugreifen und das ganze dann in INSERTs umwandeln, also anstat der
ausgabe des datensatzes.
um einen dateiinhalt in ein array zu packen ist file() recht hilfreich
mit einem foreach() kannst es dann zeilenweise durchgehen und das array
entsprechend umschreiben, oder sql inserts vorbereiten.
also quasi so
$datei = file("irgendeine.txt");
$index = 0;
$feldname = "";
foreach($datei as $zeile)
{
if($zeile == "!-!-!---Ende Datensatz---!-!-!")
{
$index++;
}
elseif($zeile == "!-!-!Feld1")
{
$feldname = "Feld1";
$sauber_array[$index][$feldname] = "";
}
else
{
$sauber_array[$index][$feldname] .= $zeile;
}
}
echo "<pre>";
print_r($sauber_array);
echo "</pre>";
MfG
Hi,
foreach($datei as $zeile)
{
// je nach feld zahl bietet sich hier auch ein switch an, hab nur Feld1 in dem Bsp geprüft, müsst dann auf alle gemacht werden, evt. hilft auch ein ereg
}
MfG
Moin,
mit einem foreach() kannst es dann zeilenweise durchgehen und das array
Danke, der Schubs mit dem foreach() war es den ich brauchte. Hätte man auch selbst drauf kommen können.
Daraus dan SQl-Statements zu machen ist kein Problem. Mittagspause ist gerettet ;-)
SteBu