CSV-Database-Import (PHP-mySQL)

Automatischer Datenabgleich / zeitgesteuerter Import

Eine häufige Anforderung ist es, regelmäßig neu vorliegende Daten mit einem eigenen Datenbestand abzugleichen. Diese Software kann dazu genutzt werden, solche wiederkehrende Datenimporte automatisch durchzuführen. Dabei wird eine URL ("Seite") des Systems einfach mit entsprechenden HTTP-Parametern aufgerufen. Die Antwort des Systems kann in diesem Fall auch in Form einer Textausgabe geschehen.

Grundsätzliches

Voraussetzung für einen erfolgreichen automatischen Datenimport ist eine dem Importdaten entsprechende Filterdatei. Diese kann - wie bei einem einmaligen "manuellen" Import auch - einfach über das System erzeugt und gespeichert werden.

Die automatischen Importläufe erfolgen durch den Aufruf der Seite "import.php". Der Import wird dabei durch verschiedene URL-Parameter konfiguriert. Die zu setzenden Parameter werden im nächsten Abschnitt erläutert.

Um den Seitenaufruf zeitgesteuert erfolgen zu lassen bietet sich ein Cron-Job an, in welchem per "wget" die Adresse geladen wird. Die Ausgabe des Scriptes kann zur maschinellen Auswertung in Textform erfolgen.

Die zu importierenden Daten können dabei als lokale Datei auf dem Server vorliegen oder auch direkt per URL-Parameter übermittelt werden.

Die Aufrufparameter
output_messages_only
"1" - Statt HTML erfolgt die Rückgabe als Text
import_filter_name
Name der zu verwendenden Filterdatei
import_csv_with_header
"1" - Die erste Zeile der CSV-Datei ist eine Kopfzeile, welche keinen zu importierenden Datensatz enthält
import_do_update
"1" - bestehende Datensätze werden mit den importierten Daten aktualisiert. Es werden keine neuen Datensätze angelegt.
import_do_insert
"1" - neue Datensätze werden angelegt
import_empty_first
"1" - die Zieltabelle wird vor dem Import von Daten geleert
display_csv
"1" - wenn als Rückgabeformat HTML gewählt wurde, werden die verarbeitenden CSV-Daten im der zurückgegebenen HTML_Seite angezeibgt (siehe auch Parameter "output_messages_only")
preview_filtered_only
"1" - der Import wird nur testweise durchgeführt. Die Daten in der Datenbank werden dabei nicht geändert.
import_csv_separator
Das Separator-Zeichen des zu verwendenten CSV-Formates. Ist dieser Parameter nicht gegeben, wird das Standardzeichen aus der Grundkonfiguration des Systems verwendet.
local-csv-file
Lokaler Dateipfad einer zu importierenden CSV-Datei
csv-data
Die zu importierenden CSV-Daten (wenn keine lokale Datei importiert werden soll -> siehe Parameter "local-csv-file")
Beispiel für einen Aufruf

Dieser Aufruf aktualisiert die Datenbank mit den Daten aus der lokalen Datei "/importdata/current.csv" mit dem Filter "default.php". Die Ausgabe erfolgt in Textform:

import.php?output_messages_only=1&import_filter_name=default.php&import_csv_with_header=1&import_do_update=1&import_do_insert=0&import_csv_separator=%3B&local-csv-file=%2Fimportdata%2Fcurrent.csv

Ein Aufruf via cron könnte also folgendermaßen aussehen (der Aufruf im geschützten Verzeichnis erfolgt hier mit wget):

* 20 * * * cronuser wget --http-user=loginname --http-passwd=PassWort --quiet -O "http://meine.webseite.org/index.php?import.php?output_messages_only=1&import_filter_name=default.php&import_csv_with_header=1&import_do_update=1&import_do_insert=0&import_csv_separator=%3B&local-csv-file=%2Fimportdata%2Fcurrent.csv"

© minisystems gbr 2004-2014