Hallo in die Runde,
mit dem Shopsystem bin ich sehr zufrieden, alles läuft so wie gewünscht. Auch das tägliche Update des Shops läuft wie die Ergänzung von Artikeln über erstellte SQL Abfragen fehlerlos. Meine WaWi erzeugt die notwendigen Dateien im csv Format, diese werden dann über PHPMyAdmin manuell in die Tabellen der Oxid DB geladen. Alle funktioniert tadellos, aber: Es braucht echt Zeit, die Daten zu erzeugen und manuell zu laden, deshalb die Idee:
- Die WaWi erzeugt die Daten im Batch (erledigt, es sind ca. 170 Dateien mit maximal 3000 Artikeln pro Datei, Datename ist immer <Firmenname>.csv), eine spezielle datei mit allen 55.000 Artikeln heißt Update.csv und korrigiert nur die Basisinformationen des Artikels
- Ein Sync Programm (z.B. Pureysnc) lädt diese automatisch in ein definiertes Verzeichnis auf dem Server. (erledigt)
- Ein kleines Script wird zyklisch gestartet, schaut nach den Dateien, importiert bzw. updated die Tabellen und löscht anschließend die Dateien wieder (leider noch nicht erledigt)
Ich habe zwar etwas zusammengetragen, aber bitte wirklich um Hilfe bzw. Rat, ob das auch nur ansatzweise der richtige Weg wäre (die SQL Anweisungen selbst funktionieren tadellos):
<?php
$db = mysql_connect("localhostxxxx", "dbxxxxx", "xxxxx") or die("Could not connect.");
if(!$db)
die("no db");
if(!mysql_select_db("dbxxxxx",$db))
die("No database selected.");
$csvArray = glob("xxxxxxxxxxxx/csvimport/csv/*.csv");
foreach ($csvArray as $datei)
{
if $datei = 'update.csv'
{
$sql = 'TRUNCATE TABLE `Import`';
§sql = 'LOAD DATA LOCAL INFILE $datei INTO TABLE `Import` FIELDS TERMINATED BY \';\' ESCAPED BY \'\\\\\' LINES TERMINATED BY \'\\r\
\' (`OXID`, `OXTITLE`, `OXTITLE_1`, `OXSTOCK`, `OXPRICE`, `OXTPRICE`, `OXSHORTDESC`, `OXSHORTDESC_1`)';
$sql = 'UPDATE `oxarticles`, `Import` SET oxarticles.OXTITLE = Import.OXTITLE, oxarticles.OXTITLE_1 = Import.OXTITLE_1, oxarticles.OXPRICE = Import.OXPRICE, oxarticles.OXTPRICE = Import.OXTPRICE, oxarticles.OXSTOCK = Import.OXSTOCK, oxarticles.OXSHORTDESC = Import.OXSHORTDESC, oxarticles.OXSHORTDESC_1 = Import.OXSHORTDESC_1 WHERE oxarticles.OXID = Import.OXID';
$sql = 'Delete FROM `oxarticles` WHERE OXID NOT IN (SELECT OXID FROM `Import`)';
$sql = 'DELETE FROM `oxobject2category` WHERE OXOBJECTID NOT IN (SELECT OXID FROM `oxarticles`)';
$sql = 'DELETE FROM `oxartextends` WHERE OXID NOT IN (SELECT OXID FROM `oxarticles`)';
}
else
{
$sql = 'LOAD DATA LOCAL INFILE $datei INTO TABLE `oxarticles` FIELDS TERMINATED BY \';\' ESCAPED BY \'\\\\\' LINES TERMINATED BY \'\\r\
\' (`OXID`, `OXSHOPID`, `OXARTNUM`, `OXEAN`, `OXDISTEAN`, `OXTITLE`, `OXPRICE`, `OXSTOCK`, `OXTPRICE`, `OXACTIVE`, `OXISSEARCH`, `OXPIC1`, `OXMPN`, `OXSHORTDESC`, `OXTITLE_1`, `OXSHORTDESC_1`, `OXMANUFACTURERID`, `OXVENDORID`)';
}
Unlink ($datei)
}
?>
Danke schön im Voraus und bitte nicht auf mich einschlagen, ich habe echt kaum Ahnung davon…
mfG
Michael