Wie entlade ich Daten von Redshift nach S3?


8

Ich habe versucht, einige Daten von Redshift in den S3-Bucket zu entladen. Außer ich habe den folgenden Fehler erhalten:

Amazon Ungültiger Vorgang: Aktives Portal kann nicht gelöscht werden. [SQL-Status = XX000, DB-Fehlercode = 500310]

Um zu beachten, dass sich Redshift und S3 in zwei verschiedenen Buckets befinden, habe ich den Bereich innerhalb des Entladens angegeben.

Ich habe versucht, es nachzuschlagen. Es wird erwähnt, dass ich den Tisch nicht fallen lassen kann.

Also habe ich eine "Test" -Tabelle erstellt, von der ich zu 100% sicher bin, dass sie mit keiner Ansicht verbunden ist, aber ich erhalte immer noch den gleichen Fehler.

Ich habe auch versucht, Fehler durch AWSQuickSolutions zu beheben: Redshift-Tabelle kann nicht gelöscht werden oder Tabelle hängt hängen, außer ich habe keinen Zugriff auf svv_table_info.

Gibt es eine Möglichkeit, das Entladen durchzuführen?


Ich bin verwirrt. Sie sprechen davon, eine UNLOAD Tabelle erstellen zu wollen (was bedeutet, dass die Daten nach S3 exportiert werden), aber dann sprechen Sie davon, die Tabelle zu löschen. Welche Operation möchten Sie durchführen?
John Rotenstein

2
Ich möchte eine Kopie der Daten erstellen, die ich in Rotverschiebung zu S3 habe, damit ich dann die CSV herunterladen kann. Ich kann es in der SQL Workbench nicht tun, da mein Speicher es nicht zulässt. Ich habe online gesucht, dass das Entladen das tun würde. Außer ich bekomme den Fehler, den ich gepostet habe. Wenn ich nach dem Fehler suche, spricht es von Tabellentropfen, was mich verwirrt.
ivb1

Verwenden Sie den UNLOADBefehl Redshift ? (Können Sie uns Ihren Befehl zeigen?) Funktioniert es, wenn Sie in einen Eimer in derselben Region entladen? Das Entladen hat nichts mit dem Löschen von Tabellen zu tun.
John Rotenstein

2
Das passiert auch für mich. Ich habe es umgangen, indem ich UNLOAD von einer anderen App aus ausgeführt habe, in meinem Fall vom Abfrage-Editor in der Redshift-Konsole.
Nofinator

1
Ich war erfolgreich, indem ich die Sitzung neu startete
darekarsam

Antworten:


2

@nofinator-Antwort melden, da es für mich funktioniert hat und auch für andere hilfreich sein kann:

Durch Ausführen von UNLOAD aus einer anderen App, in meinem Fall dem Abfrage-Editor in der Redshift-Konsole, wurde die Ausnahme behoben Amazon Invalid operation: cannot drop active portal


1

OK, also bin ich auf das gleiche Problem gestoßen. Keine der bekannten Lösungen traf auf mein Problem zu, weil:

1) Der Cluster befand sich in derselben Region wie der von mir erstellte S3-Bucket

2) Ich habe versucht, den Befehl UNLOAD über Python, CLI und Redshift mit denselben Ergebnissen auszuführen.

3) Ich habe versucht, eine Bucket-Richtlinie für die Rotverschiebungsrolle hinzuzufügen

4) Ich habe versucht, den Befehl unload mit for arns (der Redshift-Rolle und der s3-Rolle) auszuführen.

Endlich habe ich es zum Laufen gebracht. Was hat sich geändert? Ich war jetzt direkt im Netzwerk meines Unternehmens, anstatt VPN zu verwenden, als dieses Problem auftrat.

Was bei mir endlich geklappt hat:

UNLOAD ('SELECT * FROM table where EXTRACT(YEAR FROM order_datetime_utc )=2019')   
              to 's3://bucket/' 
              REGION 'us-east-1'
                iam_role 'arn:aws:iam::0000000000:role/RedshiftCopyUnload,arn:aws:iam::0000000000:role/S3Access'
              parallel off
              delimiter as '\t' 
gzip;

0

Ich hatte gestern das gleiche Problem. Zumindest in meinem Vorfall gab es eine Sev-2 im Data-Warehouse. Ich verwende Amazon DWP, das vom Amazon-Einzelhandel verwendet wird. Daher bin ich mir nicht sicher, ob dies derselbe Dienst ist, der von AWS verwendet wird.

tldr; Es ist möglich, dass dies ein Serverproblem innerhalb des Anbieters der Rotverschiebung ist.


0

Ich hatte dieses Problem, nachdem ich die IAM-Berechtigungen für die Rolle geändert hatte. Leider musste ich den Cluster neu starten und dann funktionierte mein UNLOAD-Befehl.


0

Ich weiß nicht genau, was diesen Fehler verursacht hat, aber ich habe ihn nach einem fehlgeschlagenen Entladen erhalten.

Ich trenne die Verbindung, verbinde dann meinen SQL-Client wieder und bringe ihn zum Laufen. Nicht sehr praktisch, aber besser als ein Neustart des Clusters.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.