Hallo,
ist es möglich, einen Kopierbefehl innerhalb einer Procedure auszuführen?
Bsp:
…
declare
path varchar(256);
begin
select file_path into path from tabFile where id=11111;
–unix command
cp path /tmp
end
…
Wie kann ein externes Programm aufgerufen werden?
Gruß
Chris
ads
24. Juni 2009 um 11:28
2
Mit jeder serverseitigen Programmiersprache, die als Untrusted definiert ist.
PostgreSQL: Documentation: Manuals: PostgreSQL 8.3: CREATE LANGUAGE
nein - es sei denn du benutzt eine andere sprache (andere language handler) und schaltest … security-dingens UNSTRUSTED … ab …
mit Pq/PLsql jet dat nüsch . o O (glaub ich)
ads
24. Juni 2009 um 11:32
4
Fast. Nicht “ab”, sondern die Sprache muss als Untrusted definiert sein.
mit Pq/PLsql jet dat nüsch . o O (glaub ich)
Richtig. Ole!
ah - man koennte also Pq/plsql einfach noch mal CREATEn als “andere” sprache - nur UNTRUSTED ? - auch schoen
Hallo,
ist es möglich, einen Kopierbefehl innerhalb einer Procedure auszuführen?
Bsp:
…
declare
path varchar(256);
begin
select file_path into path from tabFile where id=11111;
–unix command
cp path /tmp
end
…
Wie kann ein externes Programm aufgerufen werden?
Gruß
Chris
Für UNIX-Shell-Dinge bietet sich plsh an, soll es mehr portabel sein, pl/perlU.
Aber mit plpgsql geht es nicht.
Andreas
ads
24. Juni 2009 um 11:36
7
Nein.
Bitte informier dich.
Hmm - es deutet nichts darauf hin, dass es nicht funktionieren sollte:
CREATE PROCEDURAL LANGUAGE 'plpgsqlU'
HANDLER plpgsql_call_handler
VALIDATOR plpgsql_validator;
Ich experimentiere aber noch
Ich hatte das schonmal mit pl/Java gemacht - da benoetigte ich eine UNTRUSTED variante - und funktionierte …
Das Problem wird letztendlich bei Pq/plsql sein, dass es keine Funktionalitaet unterstuetzt um externe Funktionen aufzurufen?!
ads
24. Juni 2009 um 11:58
9
Richtig.
pl/pgSQL liegt nur als Trusted Variante vor.
Hallo,
vielen Dank für die Antworten.
Habe zuerst mit dem Befehl COPY “http://www.postgresql.org/docs/8.3/interactive/sql-copy.html ” gearbeitet. Allerdings muss der DB-User superuser-Rechte besitzen. Die möchte ich aber nicht zuweisen.
Bis jetzt habe ich auch noch keine Lösung gefunden. Möchte aber PL/pgSQL weiter verwenden.
Gruß
CM
Andere Baustelle. Dieser Befehl macht was völlig anderes.
Bis jetzt habe ich auch noch keine Lösung gefunden. Möchte aber PL/pgSQL weiter verwenden.
Gruß
CM
Das ist kein Ausschluß. Schreibe Dir in z.B. plsh eine Function, die Du dann in plpgsql aufrufen kannst.
Aber Du solltest beachten:
man sollte in der DB Dinge tun, die was mit den Daten INNERHALB der DB zu tun haben. Nicht mit externen Daten hantieren, Du hast keine Kontrolle mehr, ob das funktioniert, keine Transaktionen etc.
Andreas