Condividi tramite


Modificare il tipo di colonna senza perdita di dati

Si applica a: ✅Microsoft FabricAzure Esplora dati

Il comando alter column modifica il tipo di colonna, rendendo i dati originali irreversibili. Per mantenere i dati preesistenti durante la modifica del tipo di colonna, creare una nuova tabella tipizzata correttamente.

Per ogni tabella OriginalTable in cui si vuole modificare un tipo di colonna, seguire questa procedura:

  1. Creare una tabella NewTable con lo schema corretto (i tipi di colonna destra e lo stesso ordine di colonna).

  2. Inserire i dati in NewTable da OriginalTable, applicando le trasformazioni dei dati necessarie. Nell'esempio seguente Col1 viene convertito nel tipo di dati string.

    .set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)
    
  3. Usare il comando .rename tables per scambiare i nomi delle tabelle .

    .rename tables NewTable=OriginalTable, OriginalTable=NewTable
    

    Al termine del comando, i nuovi dati delle pipeline di inserimento esistenti passano a OriginalTable che ora vengono digitati correttamente.

  4. Eliminare la tabella NewTable.

    NewTable include solo una copia dei dati cronologici da prima della modifica dello schema. Può essere eliminato in modo sicuro dopo aver confermato lo schema e i dati in OriginalTable sono stati aggiornati correttamente.

    .drop table NewTable
    

Esempio

Nell'esempio seguente viene aggiornato lo schema di OriginalTable mantenendo i dati.

Creare la tabella, OriginalTable, con una colonna " Col1" di tipo GUID.

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

Inserire quindi i dati in 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

Creare la tabella, NewTable di tipo string.

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

Aggiungere dati da OriginalTable a NewTable e usare la funzione per convertire la tostring() colonna "Col1" dal GUID di tipo alla stringa di tipo.

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

Scambiare i nomi delle tabelle.

.rename tables NewTable = OriginalTable, OriginalTable = NewTable

Eliminare la tabella con NewTable lo schema e i dati precedenti.

.drop table NewTable