Anzeige:
Ergebnis 1 bis 15 von 16

Thema: Postgres Programmierung

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer
    Registriert seit
    28.07.2003
    Ort
    Tirschenreuth
    Beiträge
    81

    Postgres Programmierung

    Guten Abend,

    ich habe ein kleines Problem mit meinem Wissensstand.
    Möchte folgendes bewerkstelligen.

    Schicke per FTP eine Datei (Lieferschein) an einen Server. Dieser wird per Skript und cronjob in insertbefehle umgewandelt und in die Datenbank eingelesen. Soweit funktioniert auch alles.

    Jetzt kommt der Knackpunkt.

    Per Funktion (on insert) sollen die neu eingelesenen Lieferscheindaten auf die entsprechenden Tabellen verteilt werden. (Artikel, Artikelbestand, Artikelfarbe, usw.) Dabei kann es sein, dass der Artikel bereits vorhanden ist und dann die Datensätze nur upgedated werden sollen.

    Das funktioniert ja nur über eine postgresinterne Programmierung !?!?!
    (automatisch meine ich)
    Gibt es hier irgendwelche empfehlenswerte Literatur (Habe von Addison Wesley das Postgres Buch und hier wird nur am Rande darauf eingegangen.)

  2. #2
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    hallo wackeldackel,

    soweit ich die Doku verstanden habe, kann postgres mit unterschiedlichen Sprachen umgehen. Damit ist die Aufgabe, die Du stellst sicherlich zu bewerkstelligen.

    Ich habe mich aus verschiedenen Gründen gegen diesen Weg entschieden, und setzte statt dessen Perl (extern) ein, um Aktionen mmwie Importe, Exporte usw vorzunehmen.
    Der Zugriff mit Perl via DBI funktioniert absolut problemlos und performant.

    Ein Grund solche Dinge nicht DB-intern zu machen, ist die Datenbankabhängigkeit, in die man sich mit einer solchen Entwicklung begibt. Bei uns in der Firma ist vor ein paar Jahren eine solche Entwicklung für interne Sachen auf dem MS-SQL-Server "gewachsen". Das System ist faktisch nicht migrierbar, auch wenn es gute preiswerte Alternativen wie z.B. postgres gibt.

    Ähnliches könnte Dir auch passieren, wenn Du die DB-Plattform wechselst...
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  3. #3
    Registrierter Benutzer
    Registriert seit
    21.06.1999
    Beiträge
    677
    Ich würde Dir auch empfehlen das nicht mit stored Procedures, sondern mit einem kleinen seperaten Programm zu lösen. Programmierschnittstellen bietet PostgreSQL viele: C, Perl (DBI), Python, ...

    Kurioserweise habe ich Deine Aufgabenstellung vor einiger Zeit bei uns im Datenbankpraktikum gestellt, allerdings mit einer zusätzlichen Anforderung, dabei selber ein simples abstraktes Interface zu schreiben:
    http://lionel.kr.hs-niederrhein.de/~...S/aufgabe3.pdf

  4. #4
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    04.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Ich finde die Idee mit den Stored Procedures garnicht einmal so schlecht. Kommt allerdings auch auf den Inhalt der Datei an. Vielleicht kann man das ganze ja etwas weiter aufbereiten, so dass man die Daten leichter integrieren kann.

    Ich würde es wahrscheinlich so lösen.
    • Kopfdaten auslesen und in eine eigene Datei schreiben
    • Positionsdaten auslesen und in eine separate Datei schreiben
    • Kopfdaten in eine Tabelle KJOUERNAL schreiben
    • Positionsdaten in eine Tabelle PJOURNAL schreiben
    • Bestandsdateien per AfterUpdate oder wie immer das Event der PJOURNAL heißt updaten.
    • ggfs. die Original Lieferscheindatei archivieren.
    Dafür muß man nichteinmal Perl & Co. bemühen. AWK sollte ausreichen, ist aber Geschmackssache.

    Kannst du nicht einmal so einen Musterlieferschein posten oder attachen?

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  5. #5
    Registrierter Benutzer
    Registriert seit
    28.07.2003
    Ort
    Tirschenreuth
    Beiträge
    81
    Danke für die Tipps,

    also die Lieferscheine sehen so aus:
    ID;Artikelnummer;ArtikelID;Bezeichnung;Lieferant;H ersteller;Farbe;Groesse;PreisDM;PreisEuro;Menge
    161104_2;4030563095065;K3;Krawatten;4030563;Hatico ;18;1;0;14.9;1
    161104_2;4030563217900;K2;Krawatten;4030563;Hatico ;19;1;0;19.9;100
    161104_2;4030563094884;K1;Krawatten;4030563;Hatico ;17;1;0;9.9;50

    ohne Kopfzeile !!!, die ist nur für das bessere Verständnis. Naja ich würde die Sache noch um ein paar Spalten erweitern (MwSt, Umsatzgruppe,...)

    Was die Abhängigkeit von der DB angeht, so ist da kein Problem. Das ist ein privates Projekt für geschäftlichen Einsatz. Sozusagen mein Zeitvertreib, der wenn er funktioniert, verwendet wird, oder nicht. Somit bestimme ich die Regeln und wir setzen im Unternehmen die Postgres DB eh schon ein.

    An eine externe Aufbereitung hatte ich auch schon gedacht. Per Cronjob "einfach" die benötigten Tabellen nachts entladen und dann prüfen, ob der Artikel (hier nehme ich den EAN, da eindeutig) bereits vorhanden ist.

    Wenn ja -> update
    Wenn nein -> insert

    Wäre wahrscheinlich der einfachste Weg.

    Was stored procedures angeht, würde ich wahrscheinlich daran kläglich scheitern, da zu wenig Ahnung (Programmiersprachen !!!!). Wie gesagt, ich habe die Beispiele im Buch schon nicht verstanden und soll dann obigen Inhalt auf 7 Tabellen verteilen (mit den entsprechenden Abhängigkeiten).

    Eine andere Möglichkeit (die ich nicht unbedingt möchte) wäre das einlesen in eine Tabelle und dann ein manueller Import (PHP), wäre auch sehr einfach realisiert.

    Aber das externe Bearbeiten reizt mich mehr, werde ich mal angehen.

    (Jetzt ist dieser Thread aber im falschen Bereich )

  6. #6
    Registrierter Benutzer
    Registriert seit
    28.07.2003
    Ort
    Tirschenreuth
    Beiträge
    81

    Praktikumsaufgabe

    Hallo Cristoph,

    ich habe mir deine Beschreibung durchgelesen und höre jetzt lieber auf am Rechner rumzuspielen und geh Schnee räumen. Damit komme ich wenigstens zurecht. und am Ende kann sich das auch sehen lassen.

    Hier schreibt ein Nebenbeiamrechnerfummelndenautoditaktischenihkkurs besuchendenmöchtegerntipper !!!!!!!!!!!!!!!!!!!!

    Danke aber trotzdem, ich speichere das Teil und les es in 5 Jahren noch einmal durch.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •