web-dev-qa-db-fra.com

Comment augmenter la taille des colonnes dans les tables de base de données Redshift?

Dans Oracle, je peux:

Alter table table_name
modify column_name datatype;

Est-ce possible dans une base de données redshift?

6
Vinoth _S

Dans AWS Redshift est maintenant possible de modifier UNIQUEMENT la colonne VARCHAR mais dans ces conditions:

  • Vous ne pouvez pas modifier une colonne avec des encodages de compression BYTEDICT, RUNLENGTH, TEXT255 ou TEXT32K.
  • Vous ne pouvez pas réduire la taille inférieure à la taille maximale des données existantes.
  • Vous ne pouvez pas modifier les colonnes avec des valeurs par défaut.
  • Vous ne pouvez pas modifier les colonnes avec UNIQUE, PRIMARY KEY ou FOREIGN KEY.
  • Vous ne pouvez pas modifier les colonnes à l'intérieur d'un bloc à instructions multiples (BEGIN ... END).

Voir la documentation .

6
enri

Récemment, AWS a ajouté la prise en charge de l'augmentation de la taille de la colonne varchar,

Modifier une colonne VARCHAR Pour économiser le stockage, vous pouvez définir initialement une table avec des colonnes VARCHAR avec la taille minimale requise pour vos besoins de données actuels. Si plus tard, vous devez prendre en charge des chaînes plus longues, vous pouvez modifier le tableau pour augmenter la taille de la colonne. Pour protéger les données existantes, vous ne pouvez pas réduire la taille des colonnes.

L'exemple suivant modifie la taille de la colonne EVENTNAME en VARCHAR (300).

alter table event alter column eventname type varchar(300);

La commande suivante échoue car elle tente de réduire la taille de la colonne EVENTNAME.

alter table event alter column eventname type varchar(100);

lien

3
Arik Gortsunian

Augmentation de la taille/du type de colonne dans la table de base de données Redshift

Non, vous ne pouvez pas augmenter la taille de la colonne dans Redshift sans recréer le tableau.

Mais si la colonne est la dernière colonne du tableau, vous pouvez ajouter une nouvelle colonne avec les modifications requises et déplacer les données, puis l'ancienne colonne peut être supprimée comme ci-dessous.

ALTER TABLE TEST ADD COLUMN COLUMN_NEW VARCHAR(100);
UPDATE TEST SET COLUMN_NEW = COLUMN_OLD;
ALTER TABLE TEST DROP COLUMN COLUMN_OLD;
ALTER TABLE TEST RENAME COLUMN COLUMN_NEW TO COLUMN_OLD;
3
Tech Support