Wie ändere ich den Spaltendatentyp in der Amazon Redshift-Datenbank?
Ich kann den Spaltendatentyp in Redshift nicht ändern. Gibt es eine Möglichkeit, den Datentyp in Amazon Redshift zu ändern?
amazon-web-services
amazon-redshift
user1485267
quelle
quelle
Antworten:
Wie in der Dokumentation zu ALTER TABLE angegeben , können Sie die Länge von
VARCHAR
Spalten mithilfe von ändernBei anderen Spaltentypen kann ich mir nur vorstellen, eine neue Spalte mit einem korrekten Datentyp hinzuzufügen, dann alle Daten aus der alten Spalte in eine neue einzufügen und schließlich die alte Spalte zu löschen.
Verwenden Sie einen ähnlichen Code:
Es wird eine Schemaänderung geben - die neu hinzugefügte Spalte wird die letzte in einer Tabelle sein (dies kann ein Problem mit der
COPY
Anweisung sein, denken Sie daran - Sie können eine Spaltenreihenfolge mit definierenCOPY
).quelle
um die von Tomasz erwähnte Schemaänderung zu vermeiden:
quelle
drop table
Abfrage zeigt den Abhängigkeitsfehler an, der umgangen werden kann, aber nicht umgangen werden sollte.INSERT INTO <TABLE_NAME> SELECT * FROM <TABLE_NAME>_OLD;
(Letzte Aktualisierung) Es ist möglich, den Typ für Varchar-Spalten in Redshift zu ändern.
Beispiel:
Hier ist die Dokumentation Link
quelle
Wenn Sie die Spaltenreihenfolge nicht ändern möchten , können Sie eine temporäre Tabelle erstellen, die neue Tabelle mit der gewünschten Größe löschen und erstellen und dann die Daten erneut zusammenfassen.
Das einzige Problem beim Neuerstellen der Tabelle besteht darin, dass Sie erneut Berechtigungen erteilen müssen. Wenn die Tabelle zu groß ist, dauert dies einige Zeit.
quelle
quelle
Da Redshift eine spaltbare Datenbank ist, können Sie den Datentyp nicht direkt ändern. Im Folgenden finden Sie jedoch einen Ansatz, mit dem die Spaltenreihenfolge geändert wird.
Schritte -
1.Alter-Tabelle Hinzufügen einer neuen Spalte zur Tabelle 2. Aktualisieren Sie den Wert der neuen Spalte mit dem Wert der alten Spalte 3.Alter-Tabelle zum Löschen der alten Spalte 4. Alter-Tabelle zum Umbenennen der Spalte in die alte Spalte
Wenn Sie die Reihenfolge der Spalten nicht ändern möchten, ist die Lösung zu
1.Erstellen Sie eine temporäre Tabelle mit einem neuen Spaltennamen
Kopieren Sie Daten von der alten Tabelle in die neue Tabelle.
alten Tisch fallen lassen
Benennen Sie die Newtable in Oldtable um
Eine wichtige Sache ist, eine neue Tabelle mit dem Befehl like zu erstellen, anstatt einfach zu erstellen.
quelle
Diese Methode funktioniert zum Konvertieren einer (großen) int-Spalte in einen varchar
quelle
Für die Aktualisierung derselben Spalte in Rotverschiebung würde dies gut funktionieren
Sie können mehrere Klauseln verwenden, indem Sie und verwenden, um Verwirrung für SQL zu vermeiden
Prost!!
quelle