2017-01-18 4 views
-1

Ich habe einen SQL-Befehl in PosgreSQL:eine Nachricht benutzerdefinierte Druck in Postgresql

insert into table1(a, b, c) 
select (d, e, f) from table2; 

Es ist nur ein einziger Befehl, kein Verfahren. Gibt es eine Möglichkeit, einige Informationen zu stdout auszudrucken, nachdem eine Operation in jeder Zeile ausgeführt wurde? Wenn 10 Datensätze in Tabelle1 vorhanden sind, sollten 10 benutzerdefinierte Nachrichten sein.

Antwort

3

Vielleicht hilft Ihnen diese Methode. Dies wird Ihre benutzerdefinierte Nachricht zurückgeben.

INSERT into table1(col_a1, col_a2, col_a3) 
SELECT (col_b1, col_b2, col_b3) FROM table2 RETURNING 'My Message ' || col_b1 || ' ' || col_b2; 
+0

warum '|| col_b1'? – Jodooomi

+0

Wenn Sie den col_b1-Wert mit Ihrer Nachricht drucken möchten, können Sie sie verwenden. –

+0

Wenn Sie keine Spaltenwerte drucken möchten, entfernen Sie '|| col_b1' –

2

Ich habe einen SQL-Befehl in PosgreSQL

Im Allgemeinen ist zwei Maschinen (wahrscheinlich unter Linux) und zwei Prozesse dann beteiligt sind, da PostGreSQL ein Client-Server-Design. Das RDBMS wird auf einem Computer ausgeführt (in einem oder mehreren Prozessen) und auf Socketverbindungen warten und Anforderungen für sie verarbeiten, sodass jeder SQL-Befehl eine eigene Anforderung hat. Die client läuft auf einer anderen Maschine (im Allgemeinen; in einigen Fällen könnte es die gleiche Computer sein) und verwendet die libpq Bibliothek oder einen Wrapper darüber. Client und Server kommunizieren unter Verwendung von TCP/IP-Sockets auf z. einige Ethernet-Kabel.

Gibt es eine Möglichkeit einige Informationen auszudrucken nach einer Operation an stdout

Aber die stdout? Auf dem (PostGreSQL) Server-Rechner oder dem Client?

(Server und Client oben im PostGreSQL Sinne gemeint sind, wenn Sie eine Web-Anwendung codieren, zum Beispiel in PHP - oder in Ocaml mit Ocsigen -, ist es wahrscheinlich sowohl als HTTP Server fungiert und als PostGreSQL Client)

Wenn Sie eine benutzerdefinierte Nachricht auf dem Client drucken möchten, sollten Sie den SQL-Befehl ändern, um eine Liste mit Antworten zu erhalten (Ihr SQL-Befehl ist wahrscheinlich ein komplexer Komplex SELECT). Dann können Sie eine printf nach jeder Zeile hinzufügen, die Sie vom Server erhalten haben. Lesen Sie das Kapitel asynchronous command processing (in der Dokumentation libpqClient-Bibliothek), die erläutert, wie Sie jede Zeile nacheinander abrufen und verarbeiten.

Wenn Sie eine benutzerdefinierte Nachricht auf dem Server Maschine ausdrucken möchten, beachten Sie, dass die stdout des Servers könnte /dev/null weitergeleitet. Betrachten Sie in diesem Fall einige server programming interface oder einige SQL extensions.

Sobald Sie, auf welcher Seite verstanden haben (client or server, w.r.t. PostGreSQL) Sie wollen, dass die stdout Nachricht passieren, können Sie es entsprechend programmieren könnte.

+0

auf einem Server-Computer. – Jodooomi

+0

'könnte umgeleitet werden 'oder möglicherweise nicht. – Jodooomi

+0

Dann sind Sie widersprüchlich.Sie wählen die andere Antwort als die definitive Antwort (und das ist in Ordnung), aber es gibt die Nachricht auf dem Client-Rechner, nicht "auf dem Server-Rechner", wie Ihr erster Kommentar sagt. –

Verwandte Themen