Compartilhar via


Alterar o tipo de coluna sem perda de dados

Aplica-se a: ✅Microsoft FabricAzure Data Explorer

O comando .alter column altera o tipo de coluna, tornando os dados originais irrecuperáveis. Para preservar os dados preexistentes ao alterar o tipo de coluna, crie uma nova tabela digitada corretamente.

Para cada tabela OriginalTable em que você deseja alterar um tipo de coluna, execute as seguintes etapas:

  1. Crie uma tabela NewTable com o esquema correto (os tipos de coluna corretos e a mesma ordem de coluna).

  2. Assimile os dados em NewTable from OriginalTable, aplicando as transformações de dados necessárias. No exemplo a seguir, Col1 está sendo convertido no tipo de dados string.

    .set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)
    
  3. Use o comando .rename tables para trocar nomes de tabelas.

    .rename tables NewTable=OriginalTable, OriginalTable=NewTable
    

    Quando o comando é concluído, os novos dados dos pipelines de ingestão existentes fluem para OriginalTable que agora sejam digitados corretamente.

  4. Solte a tabela NewTable.

    NewTable Inclui apenas uma cópia dos dados históricos anteriores à alteração do esquema. Ele pode ser descartado com segurança após confirmar que o esquema e os dados foram OriginalTable atualizados corretamente.

    .drop table NewTable
    

Exemplo

O exemplo a seguir atualiza o esquema de OriginalTable enquanto preserva seus dados.

Crie a tabela, OriginalTable, com uma coluna, "Col1", do tipo guid.

.create table OriginalTable (Col1:guid, Id:int)

Em seguida, assimile dados em OriginalTable.

.ingest inline into table OriginalTable <|
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

Crie a tabela, NewTable do tipo string.

.create table NewTable (Col1:string, Id:int)

Acrescente dados de OriginalTable para NewTable e use a tostring() função para converter a coluna "Col1" do tipo guid para o tipo string.

.set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)

Troque os nomes das tabelas.

.rename tables NewTable = OriginalTable, OriginalTable = NewTable

Drop table, NewTable com o esquema e os dados antigos.

.drop table NewTable