Partilhar via


Comando .alter column

Altera o tipo de dados de uma coluna de tabela existente.

Aviso

Ao alterar o tipo de dados de uma coluna, todos os dados pré-existentes nessa coluna devolverão um valor nulo em consultas futuras. Depois de utilizar .alter column, esses dados não podem ser recuperados, mesmo utilizando outro comando para alterar o tipo de coluna para um valor anterior. Se precisar de preservar dados pré-existentes, veja o nosso procedimento recomendado para alterar o tipo de uma coluna sem perder dados.

Permissões

Tem de ter, pelo menos, permissões de Administração tabela para executar este comando.

Syntax

.altercolumn [DatabaseName.] TableName.ColumnNametype=ColumnNewType

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Necessário Descrição
DatabaseName string O nome da base de dados que contém a tabela.
TableName string ✔️ O nome da tabela que contém a coluna a alterar.
ColumnName string ✔️ O nome da coluna a alterar.
ColumnNewType string ✔️ O novo tipo de dados para a coluna.

Exemplo

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

Alterar o tipo de coluna sem perda de dados

Para alterar o tipo de coluna ao manter os dados históricos, crie uma tabela nova e corretamente digitada.

Para cada tabela T1 em que pretende alterar um tipo de coluna, execute os seguintes passos:

  1. Crie uma tabela T1_prime com o esquema correto (os tipos de coluna à direita e a mesma ordem de coluna).

  2. Ingerir os dados em T1_prime a partir de T1, aplicando as transformações de dados necessárias. No exemplo abaixo, Col1 está a ser convertido para o tipo de dados de cadeia.

    .set-or-append T1_prime <| T1 | extend Col1=tostring(Col1)
    
  3. Troque as tabelas com o comando .rename tables , que permite trocar nomes de tabelas.

    .rename tables T_prime=T1, T1=T_prime
    

    Quando o comando for concluído, os novos dados dos pipelines de ingestão existentes fluem para T1 o que está agora escrito corretamente.

  4. Largar a tabela T1_prime

    T1_prime incluirá apenas uma cópia dos dados históricos (antes da alteração do esquema) e poderá ser removida em segurança depois de confirmar que o esquema e os dados no T1 foram atualizados corretamente.

    .drop table T1_prime
    

Exemplo:

Altere o tipo de dados da coluna "Col1" na tabela T1 de guid para cadeia.

// 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