Udostępnij za pośrednictwem


Zmiana typu kolumny bez utraty danych

Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer

Polecenie .alter column zmienia typ kolumny , co sprawia, że oryginalne dane są nieodwracalne. Aby zachować istniejące dane podczas zmieniania typu kolumny, utwórz nową, poprawnie wpisaną tabelę.

Dla każdej tabeli OriginalTable , w której chcesz zmienić typ kolumny, wykonaj następujące kroki:

  1. Utwórz tabelę NewTable z poprawnym schematem (odpowiednie typy kolumn i ta sama kolejność kolumn).

  2. Pozyskiwanie danych z NewTable OriginalTableprogramu , stosując wymagane przekształcenia danych. W poniższym przykładzie kolumna Col1 jest konwertowana na typ danych ciągu.

    .set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)
    
  3. Użyj polecenia .rename tables, aby zamienić nazwy tabel.

    .rename tables NewTable=OriginalTable, OriginalTable=NewTable
    

    Po zakończeniu działania polecenia nowe dane z istniejących potoków pozyskiwania są OriginalTable teraz poprawnie wpisywane.

  4. Upuść tabelę NewTable.

    NewTable zawiera tylko kopię danych historycznych przed zmianą schematu. Można ją bezpiecznie porzucić po potwierdzeniu, że schemat i dane w pliku OriginalTable zostały poprawnie zaktualizowane.

    .drop table NewTable
    

Przykład

W poniższym przykładzie zaktualizowano OriginalTable schemat programu , zachowując jego dane.

Utwórz tabelę z OriginalTablekolumną "Col1" typu guid.

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

Następnie pozyskaj dane do pliku 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

Utwórz tabelę typu NewTable ciąg.

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

Dołącz dane z OriginalTable do NewTable i użyj tostring() funkcji, aby przekonwertować kolumnę "Col1" z identyfikatora GUID typu na ciąg typu.

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

Zamień nazwy tabel.

.rename tables NewTable = OriginalTable, OriginalTable = NewTable

Upuść tabelę ze NewTable starym schematem i danymi.

.drop table NewTable