Freigeben über


Ändern des Spaltentyps ohne Datenverlust

Gilt für: ✅Microsoft Fabric✅Azure Data Explorer

Der Befehl ".alter column " ändert den Spaltentyp, wodurch die ursprünglichen Daten nicht wiederhergestellt werden können. Um vorhandene Daten beim Ändern des Spaltentyps beizubehalten, erstellen Sie eine neue, ordnungsgemäß eingegebene Tabelle.

Führen Sie für jede Tabelle OriginalTable , in der Sie einen Spaltentyp ändern möchten, die folgenden Schritte aus:

  1. Erstellen Sie eine Tabelle NewTable mit dem richtigen Schema (die rechten Spaltentypen und die gleiche Spaltenreihenfolge).

  2. Nehmen Sie die Daten ein NewTable OriginalTable, und wenden Sie die erforderlichen Datentransformationen an. Im folgenden Beispiel wird Col1 in den Zeichenfolgendatentyp konvertiert.

    .set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)
    
  3. Verwenden Sie den Befehl "Tabellen umbenennen ", um Tabellennamen auszutauschen.

    .rename tables NewTable=OriginalTable, OriginalTable=NewTable
    

    Wenn der Befehl abgeschlossen ist, fließen OriginalTable die neuen Daten aus vorhandenen Aufnahmepipelinen ordnungsgemäß ein.

  4. Legen Sie die Tabelle NewTableab.

    NewTable enthält nur eine Kopie der historischen Daten vor der Schemaänderung. Es kann sicher gelöscht werden, nachdem bestätigt wurde, dass das Schema und die Daten OriginalTable korrekt aktualisiert wurden.

    .drop table NewTable
    

Beispiel

Im folgenden Beispiel wird das Schema aktualisiert, OriginalTable während die Daten beibehalten werden.

Erstellen Sie die Tabelle mit OriginalTableeiner Spalte "Col1" vom Typ "GUID".

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

Nehmen Sie dann Daten 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

Erstellen Sie die Tabelle vom NewTable Typ Zeichenfolge.

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

Fügen Sie Daten an OriginalTable , NewTable und verwenden Sie die tostring() Funktion, um die Spalte "Col1" von Typ-GUID in Typzeichenfolge zu konvertieren.

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

Tauschen Sie die Tabellennamen aus.

.rename tables NewTable = OriginalTable, OriginalTable = NewTable

Drop-Tabelle NewTable mit dem alten Schema und den alten Daten.

.drop table NewTable