Welche Strategie wenn ich DB-Inhalte bspw. per cURL an ein REST-Interface senden will

Klingt vielleicht etwas konfus, vor allem weil ich nicht sehr tief in der Materie drin bin, gerade deshalb brauche ich einen kurzen Start-Tip, der mich auf den richtigen Weg bringt:

Also ich hab Daten in einer Postgres-DB, dann habe ich einen Webserver, den ich statt über seine GUI über seine REST-Schnittstelle steuern will. Die Dokumentation dort beschränkte sich auf den Einsatz von cURL. Das habe ich auch getestet und es funktioniert prima.

Nun will ich die beiden Welten sinnvoll miteinander verbinden, und eben parametrisiert (mit DB-Inhalten befüllte) Schnittstellenkommandos verschicken. Was macht an dieser Stelle wirklich Sinn. Es soll einfach und schlank sein.

Mein technischer Hintergrund: Gute SQL und PL/PGSQL-Kenntnisse, sanfte PERL-Erfahrung, kein Java, kein PHP und gerne batchmäßig auf der Kommandozeile unterwegs…

Danke für Eure Hilfe!
Gruß
Andreas

Ähm, ich habe noch nicht wirklich verstanden, was du machen willst.

Hmm, ist wohl schwieriger auszudrücken als gedacht…

Ich hab per Kommandozeile erfolgreich verschiedene PUT, POST, etc. Kommandos mit cURL an einen Webserver geschickt und ihm so gesagt, was er tun soll.

Nun will ich diese statischen Befehle (die momentan außerhalb der DB liegen) mit variablem Leben füllen, also einfach Inhalte (bspw. Tabellennamen oder Feldinhalte) aus einer Postgres-DB dort integrieren. Konkret würde ich zum Beispiel gerne einen Schleifendurchlauf über alle Tabellen aus pg_tables jeweils als eigenes POST-Kommando überführen.

Beispiel:

curl -u user :p assword -v -XPOST -H “Content-type: text/xml” -d “Tabelle1” http://123webserver/rest/workspaces

und dort “Tabelle1” durch eine Variable ersetzen.

Ich hab gesehen, dass es mal ein pg_curl als plugin gab, aber der Link ist tot. Es muß auch nicht unbedingt direkt aus der Datenbank heraus sein. Ich stelle mir ein Skript vor, welches die Daten abfragt und dann an die REST-Schnittstelle sendet. cURL ist dabei nicht gesetzt, sondern nur ein Beispiel an dem ich gut verstanden habe wie es funktioniert und gleichzeitig testen konnte. Hat insgesamt vielleicht auch nicht allzuviel mit DB-Problematik zu tun…

Ja, das glaube ich auch.

Ich kenne nun ungefähr das, was du machen willst. Was dein konkretes Problem ist, ist mir jedoch immer noch schleierhaft.

:slight_smile:

O.K. Nächster Versuch…

Ich brauche einen Tip, mit welcher Sprache und wo ich das Beschriebene umsetzen kann.

Mit PL/PGSQL habe ich keine Möglichkeit gefunden irgendwas an eine Shell weiterzugeben oder dort auszuführen. Es muß nicht in der DB laufen, geht auch außerhalb. Und es muß auch nicht cURL sein, obwohl ich froh wäre, wenn ich das direkt ansteuern könnte. Meine Vermutung ist, dass PERL genau das richtige sein könnte. Aber ich bin mir eben nicht sicher.



kretschmer@tux:~$ psql test -c "begin; create table rest (id int, command text); commit;"
COMMIT
kretschmer@tux:~$ psql test -c "begin; insert into rest (id,command) values (1, 'date'); commit;"
COMMIT
kretschmer@tux:~$ `psql test -tc 'select command from rest where id=1'`
Do 11. Mär 17:43:48 CET 2010
kretschmer@tux:~$

Vielleicht suchst Du sowas?

Andreas

An eine Shell weitergeben können quasi alle Programmiersprachen - indem du eine Anwendung schreibst, die auf die DB zugreift.

Aus der Datenbank heraus können alle untrusted Programmiersprachen auf die Dateisystemebene schreiben.