CSV-Database-Import (PHP-mySQL)

Filter bearbeiten

Auf dieser Seite lässt sich der Inhalt der gewählten/erzeugten Filterdatei manuell bearbeiten. Hier finden sich auch die Elemente zur Verwaltung (anlegen, ändern, löschen) der Filterdateien im System.

filtersetup of csv to database import tool
Grundsätzliches

Filterdateien("Filter") sind ein automatisch erzeugtes PHP-Skript, welches bei einem Import "ausgeführt" (included) wird. Während des Importvorganges werden bestimmte Variablen mit den aus der CSV-Datei eingelesenen Datensätzen belegt und stehen dem Filter zur Verarbeitung zur Verfügung. Der Filter belegt wiederum bestimmte Variablen für den Import in die Datenbank.

Eine Filterdatei wird im Normalfall automatisch aus den gemachten Einstellungen im Schritt "Zuordnungen" erzeugt. Durch das oben genannte Verfahren können jedoch auch komplexe Importfilter programmiert werden.

Ein Filterbeispiel mit Erläuterungen findet sich in der Filterdatei "default.php". Die grundsätzliche Arbeitsweise eines Filters erklärt sich meist aus der Ansicht eines einfachen automatisch erzeugten Filters.

Einbindung des Filters
  1. Währen des Importvorganges werden die Daten aus der CSV-Datei in die Variable "$input_array" der Laufzeitumgebung eingelesen.
  2. Die Filterdatei wird includiert (ausgeführt). Alle Ausgaben der Filters werden zwischengespeichertund kommen "später" im Verlauf der Abarbeitung zur Anzeige.
  3. Der Filter schreibt die gewünschten Ausgaben in die Variable "$output_array","$this->db_table_key1", etc.
  4. Das System schreibt den Inhalt der Variable "$output_array" mittels den vorgegebenen Einstellungen in die Datenbank.
Umgebungsvariablen zur Laufzeit

Es folgt eine kurze Erläuterung einzelner wichtiger Variablen, die zur Laufzeit des Importes vom Filter gelesen/geschrieben werden können

$input_array

Dieses Array enthält die aus dem CSV eingelesenen Datensätze. Das Array enhält wiederum Arrays (die einzelnen zeilen des CSV), welche wiederum ein Array enthalten (dieses enthält die einzelnen Spalten einer Zeile). Die Indizes dieser Arrays sind numerisch angelegt ("0","1", etc.)

$output_array

Dieses Array enthält am Ende des Filterdurchlaufs die in der Datenbank zu speichernden Daten. Dabei ist es egal, ob die Daten in die Datenbank einzufügen, oder bestehende Daten in der Datenbank mit diesen Daten zu aktualisieren sind. Das Einfügen/Aktualisieren verwaltet das System automatisch.

Das Format des "output_array" entspricht bzgl. Schachtelung dem "$input_array", jedoch sind die Indizes des innersten Arrays ("Spaltenarray" - hält die Spalten einer einzelnen Zeile) assoziativ, d.h. die Indexe dieses Array entsprechen den Spaltennamen der Zieltabelle ("id", "Name", o.ä.)

Wichtig: Soll ein Update der datenbank mittels der Daten aus der CSV-Datei erfolgen, muss mind. eine Schlüsselspalte angegeben sein und in den inneren "Spaltenarrays" von "$output_array" muss jeweils ein Wert mit dem Index des Spaltennamen gesetzt sein.

Beispiel:

Ist Schlüsselspalte "id", muss im Spaltenarray der Index ["id"] gesetzt sein.

$this->db_table_key1, $this->db_table_key2

Diese Variablen enthalten den/die Name/n der Schlüsselspalten für ein Update der Datenbank mittels der Daten aus der CSV-Datei.

$this->import_process_messages[]

In dieses Array können Meldungen aus der Verarbeitung des Filters abgelegt werden. Diese werden nach dem Importlauf angezeigt.

$this - Allgemein

Alle Eigenschaften der Klasse "CSVImport" sind unter diesem variablennamen erreichbar (-> Siehe Quelltext)

Beispieldatei "default.php" mit Erläuterungen

Diese Datei ist im System nach der Installation vorhanden und enthält einen Beispielfilter mit einigen Erläuterungen.

<?php /*
Creates the $output_array from $input_array.

The $output_array encapsulates assoziative arrays with the row-data for the database.
Rule for encapsulated arrays:
-> the names of the values are the name of the database-rows

To process updates, the key-column in $output_array must be set
(name of key-column = value of CSVImport->import_table_key..)
i.e. key in table is "ID" -> $output_columns["ID"] must be filled with data.

$input_array contains an array of "line"-arrays from the csv-file

########################

Diese Filter-Datei wird von einem CSVImport-Objekt eingebunden

Sie soll das $output_array aus dem $input_array erzeugen.

Aufbau der output- bzw. input-arrays:
$input_array und $output-array enthalten wiederum Arrays, welche die einzelnen
Datensätze enthalten (Zeilen aus dem CSV bzw. "rows" für die Datenbanktabelle)

Konventionen für die im $output_array enthaltenen (assoziativen) Arrays:
der Name der Arrayvariablen muss der Name der zugehörigen Spalte in der Datenbank sein.
-> beispielsweise kommt $output_columns["Preis"] später in die Spalte "Preis"
der Datenbanktabelle.

Bitte Beachten Sie auch, dass ein Update der Datenbank nur dann erfolgen kann,
wenn Sie mindestens eine Schlüsselspalte (CSVImport->import_table_key1) angegeben
haben und der Name der Schlüsselspalte auch als Name einer Arrayvariablen im
$output_array enthalten ist.
-> ist beispielsweise der Name der Schlüsselspalte in der Datenbanktabelle "ID",
dann muss die Variable $output_columns["ID"] einen Wert enthalten.

*/

//separate rows from input_-array
foreach ($input_array as $input_colums){

$output_columns = array(); //a row for the output-array ($output_array)

/*
create the "columns" for a new output-array-row
!! to process updates ensure the key-column is set
(name of key-column = value of CSVImport->import_table_key..)
*/

$output_columns['id'] = $input_colums[0];
$output_columns['name'] = $input_colums[1];
$output_columns['description'] = $input_colums[2];
$output_columns['price'] = $input_colums[3];

/* last not least -> add the array to the output-array */
$output_array[] = $output_columns;

}

/* if you want do some output */
//$this->import_process_messages[] = 'hello there...';


?>

 

© minisystems gbr 2004-2014