Philipp Hasenfratz: Datensätze mittels LOAD DATA INFILE... anhängen

Beitrag lesen

Halihallo Wolfgang

Ich habe hier die Methode angewandt, auf die Du mich verwiesen hast. Befehl sieht jetzt so aus.
LOAD DATA INFILE '$datei' INTO TABLE t_bestellung (col2, col3 ,...)
Ich weise jedem Feld genau zu, in welche Spalte es gehört. Der Index wird in der Datenbank dann per autoincrement erhöht.

Welche Daten kommen genau von SAP? - Ich hoffe, dass nur die neuen
Daten kommen, ansonsten wird dir jeder Datensatz mehrfach in die
Datenbank eingefügt, da die Datenbank ja ohne Primary Key gar nicht
unterscheiden kann, welcher Datensatz bereits vorhanden ist und
welcher nicht.

Hinter der ganzen Sache steht folgende Überlegung. Es geht hierbei um Bestellungen, die dem jeweiligen Lieferanten online zur Verfügung gestellt wird, so dass er das Ding bearbeiten kann. Man könnte das auch über einen WebSAP-Client machen, oder einfach ein SAP-Client beim Lieferanten installieren, dass kostet aber Gebühren und manmüsste die Leute in SAP "schulen". Deshalb eine "Web-EDI"-Lösung.

Hm. Wie läuft den nun der Datentransfer? - Von SAP nach MySQL/WebEDI
oder von MySQL/WebEDI nach SAP oder beides? - Wenn er die
Bestellungen ja bearbeiten können soll, sollen diese doch auch wieder
nach SAP gespiegelt werden, oder?

Wie hoch wäre denn der Programmieraufwandt für die E-Mail Gschichte? Wie funktioniert das ungefähr? Was dass angeht, bin ich ein echtes "Greenhorn"!

Nun, mit PHP oder Perl liesse sich einfach ein Programm schreiben,
welches eine Verbindung zum POP-Server aufbaut und die dort stehenden
E-Mail abholt. Diese E-Mails können dann geparsed, die CSV-Datei
exportiert und dann über LOAD DATA INFILE in die MySQL Datenbank
importiert werden.

Einlesen der Mails:
http://pecl.php.net/package/POP3
Parsen der angekommenen E-Mails:
http://pecl.php.net/package/mailparse

Dann musst du dieses Script natürlich immer starten, wenn Mails
vorliegen. Dies liesse sich über einen cron-Job realisieren, der die
Mail-Box alle 5 Minuten auf neue Nachrichten prüft. Vielleicht wäre
auch eine bestimmte Konfiguration des lokalen Mailssystems möglich,
dass dieses bei jeder Nachricht automatisch dein Parserscript
aufruft, dies würde weniger Performance beanspruchen.

Ich schätze den Aufwand aufgrund der vorliegenden Packages nicht für
gross ein. Das liesse sich (ohne Wert auf Sicherheit zu legen) sehr
schnell implementieren. Aber falls dann das Stichwort Sicherheit
wichtig wird, gehts wieder etwas länger; hierfür würde ich dann
http://www.gnupg.org/ empfehlen. Ein PHP-Interface zu diesem
Kommand-Line-Tool kenne ich nicht, aber für Perl gibt es das:
http://search.cpan.org/~ftobin/GnuPG-Interface-0.33/lib/GnuPG/Interface.pm
Über gnuPG könntest du den Content-Bereich des Mails entschlüsseln,
falls auf Seiten von SAP eine gnuPG taugliche _ver_schlüsselung
überhaupt möglich ist. Falls nein: Bietet SAP auch einen handler für
ein externes Programm an? - Falls ja, könntest du ja von beiden
Seiten her über eigene Scripte arbeiten.

Das einfachste wäre IMHO nicht über E-Mail, sondern über HTTPS mit
Authentication, aber ob das von SAP her möglich ist?

Gibt es im Netz evtl. modifizierbaren Code dafür.

Nicht, dass ich ihn hier vorliegen hätte. Beispiele, wie man mit POP
oder Mailparsing umgeht gibt es sicherlich genügend, aber eine
verwandte Scriptlösung für dein spezifisches Problem kenne ich nicht.

Viele Grüsse

Philipp