Compartir a través de


Comando .alter column

Modifica el tipo de datos de una columna de tabla existente.

Advertencia

Al modificar el tipo de datos de una columna, los datos preexistentes de esa columna devolverán un valor NULL en futuras consultas. Después de usar .alter column, esos datos no se pueden recuperar, incluso mediante otro comando para modificar el tipo de columna a un valor anterior. Si necesita conservar los datos preexistentes, consulte nuestro procedimiento recomendado para cambiar el tipo de una columna sin perder datos.

Permisos

Debe tener al menos permisos de administrador de tablas para ejecutar este comando.

Sintaxis

.altercolumn [DatabaseName ] TableName . . ColumnName type = ColumnNewType

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Type Obligatorio Descripción
DatabaseName string Nombre de la base de datos que contiene la tabla.
TableName string ✔️ Nombre de la tabla que contiene la columna que se va a modificar.
ColumnName string ✔️ Nombre de la columna que se va a modificar.
ColumnNewType string ✔️ Nuevo tipo de datos de la columna.

Ejemplo

.alter column ['Table'].['ColumnX'] type=string

Cambio del tipo de columna sin pérdida de datos

Para cambiar el tipo de columna al conservar los datos históricos, cree una tabla con tipo correcto.

Para cada tabla T1 en la que desea cambiar un tipo de columna, ejecute los pasos siguientes:

  1. Cree una tabla T1_prime con el esquema correcto (los tipos de columna correctos y el mismo orden de columna).

  2. Ingerir los datos en T1_prime desde T1, aplicando las transformaciones de datos necesarias. En el ejemplo siguiente, Col1 se convierte en el tipo de datos de cadena.

    .set-or-append T1_prime <| T1 | extend Col1=tostring(Col1)
    
  3. Cambie las tablas mediante el comando .rename tables , que permite intercambiar nombres de tabla.

    .rename tables T_prime=T1, T1=T_prime
    

    Cuando se completa el comando, los nuevos datos de las canalizaciones de ingesta existentes fluyen a T1 que ahora se escriben correctamente.

  4. Quitar la tabla T1_prime

    T1_prime incluirá solo una copia de los datos históricos (antes del cambio de esquema) y se puede quitar de forma segura después de confirmar que el esquema y los datos en T1 se actualizaron correctamente.

    .drop table T1_prime
    

Ejemplo:

Cambie el tipo de datos "Col1" de la columna de guid T1 a cadena.

// Create table T1
.create table T1 (Col1:guid, Id:int)

// Ingest sample data into T1
.ingest inline into table T1 <|
b642dec0-1040-4eac-84df-a75cfeba7aa4,1
c224488c-ad42-4e6c-bc55-ae10858af58d,2
99784a64-91ad-4897-ae0e-9d44bed8eda0,3
d8857a93-2728-4bcb-be1d-1a2cd35386a7,4
b1ddcfcc-388c-46a2-91d4-5e70aead098c,5

// Create table T1_prime with the correct schema and same column order
.create table T1_prime (Col1:string, Id:int)

// Append data to the new table
.set-or-append T1_prime <| T1 | extend Col1=tostring(Col1)

// Rename tables
.rename tables T1_prime = T1, T1 = T1_prime

// Drop table T1_prime, which now has the old schema and data
.drop table T1_prime