Tom: Datenkonvertierung

Beitrag lesen

Hello Ralphi,

ich ahbe die Datei bekommen und sie mir mit dem Hexeditor angeschaut.
Es ist ein ganz einfaches Dateiformat:

Fünf Spalten pro Datensatz
  In der ersten Spalte steht die Warengruppe
  Spalte 2 bis 5 enthalten die Daten.

Die Warengruppe wird immer nur einmal angegeben, Dann folgt der Block mit den
  zugehörigen Artikeln. Das ist so ähnlich, wie bei Datanorm. Solche Formate
  nennt man auch "einfaches Sichtformat", weil man beim Draufgucken auf den Ausdruck
  sofort die Struktur erkennt, im Wust der Bits und Bytes aber ggf. schon durcheinander
  kommt.

Also Die Datei in einem neutralen Editor (der die Daten nicht verändert) laden und den Kopf abschneiden, denn Lieferbedingungen sind keine Artikel. Das geht nur mit Sichtprüfung, da keinerlei Start-Stoppmarken oder Kopflängen-Paramter vorhanden sind.

Dann die Dateimin ein Array einlesen. Bei 122kB (wenn es die ganze Datei war) ist das noch kein Problem.

$_lines = file("dateiname");

Und dann umkopieren in ein neues Array:

$_data = array();
$wgr = "";
foreach ($_lines as $rec_str)
{
  ## Newline abschneiden, es verschwinden auch die leeren Spalten
  $rec_str = rtrim($rec_str);

## Zeile in (fünf) Spalten zerlegen
  $_rec = explode("\t",$rec_str);

## Warengruppe feststellen
  if (strlen(trim($_rec[0]))>0)
  {
    $wgr = trim($_rec[0]);
  }
  else
  {
    ## Warengruppe in Spalte einstanzen
    $_rec[0] = $wgr;

## Artikel in Array der Artikel übertragen
    $_data[] = $_rec;
  }
}

Das ergibt dann das Array aller Artikel, die Du dann mittels erneutem foreach() und

Insert into

In die Tabelle verfrachten kannst.

Bei 1500 Datensätzen kein Problem, sonst gibt es noch genügend Optimierungsmöglichkeiten.

Du könntest auch mit Update und als ID die Artikelnummer aus $_data[$n][1] arbeiten...

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau