2016-10-31 3 views
0

In Amazon Redshift verwende ich die folgende Abfrage die Anzahl der Zeilen, die von der letzten Abfrage eingefügt zu erfassen:Wie kann ich die Anzahl der Zeilen erfassen, die in eine Redshift-Tabelle eingefügt werden, die eine Identitätsspalte enthält?

SELECT SUM(rows) FROM stl_insert WHERE query = pg_last_query_id(); 

Es scheint, dass dieser Ansatz nicht, wenn ich in eine Tabelle einfügen funktioniert, die eine enthält IDENTITY-Spalte, da Redshift auch diese Abfrage ausführt: SELECT * FROM stv_identity_highwater und verwendet die ID dieser Abfrage für pg_last_query_id().

Gibt es eine andere Möglichkeit, die Anzahl der in diesem Szenario eingefügten Zeilen zu erfassen?

Antwort

2

Zum Einfügen von Werten in eine Tabelle mit Identitätsspalte Redshift wird eine Abfrage intern als SELECT * FROM stv_identity_highwater ausgelöst, sodass das Zählergebnis 0 lautet.

pg_last_query_id()-1 Fügen Sie die Einsatzzahl zu erhalten:

SELECT SUM(rows) FROM stl_insert WHERE query = pg_last_query_id()-1;

+0

Hallo, könnten Sie bitte SQL-Abfragen in Codeblöcken formatieren? Das macht es viel angenehmer zu lesen. – Arount

1

Sie könnten die Systemtabelle STL_QUERY verwenden, um die ID der Abfrage zu ermitteln, die Sie zählen möchten.

Wenn Sie der einzige Benutzer des Systems sind, könnten Sie davon ausgehen, dass Sie die vorletzte Abfrage suchen.

+0

Das Problem ist, dass ich nicht der einzige Benutzer des Systems bin ... –

+0

Sie den aktuellste STL_QUERY Eintrag finden können, die Ihre Benutzerspiele ICH WÜRDE. –

Verwandte Themen