Compartilhar 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, quaisquer dados pré-existentes nessa coluna retornarão um valor nulo em consultas futuras. Depois de usar .alter columno , esses dados não podem ser recuperados, mesmo usando outro comando para alterar o tipo de coluna de volta para um valor anterior. Se você precisar preservar dados pré-existentes, consulte nosso procedimento recomendado para alterar o tipo de coluna sem perder dados.

Permissões

Você deve ter pelo menos permissões de administrador de tabela para executar esse comando.

Sintaxe

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

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Digitar Obrigatória Descrição
DatabaseName string O nome do banco de dados que contém a tabela.
TableName string ✔️ O nome da tabela que contém a coluna a ser alterada.
ColumnName string ✔️ O nome da coluna a ser alterada.
ColumnNewType string ✔️ O novo tipo de dados para a coluna.

Exemplo

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

Alterando o tipo de coluna sem perda de dados

Para alterar o tipo de coluna enquanto retém os dados históricos, crie uma nova tabela digitada corretamente.

Para cada tabela T1 na qual você deseja alterar um tipo de coluna, execute as seguintes etapas:

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

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

    .set-or-append T1_prime <| T1 | extend Col1=tostring(Col1)
    
  3. Troque as tabelas usando o comando .rename tables , que permite a troca de 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 fluirão para T1 os quais agora serão digitados corretamente.

  4. Solte a tabela T1_prime

    T1_prime incluirá apenas uma cópia dos dados históricos (antes da alteração do esquema) e poderá ser descartada com segurança após a confirmação de que o esquema e os dados foram T1 atualizados corretamente.

    .drop table T1_prime
    

Exemplo:

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

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