Partager via


Modifier le type de colonne sans perte de données

S’applique à : ✅Microsoft Fabric✅Azure Data Explorer

La commande .alter column modifie le type de colonne, ce qui rend les données d’origine irrécupérables. Pour conserver les données préexistantes lors de la modification du type de colonne, créez une table correctement typée.

Pour chaque table OriginalTable dans laquelle vous souhaitez modifier un type de colonne, exécutez les étapes suivantes :

  1. Créez une table NewTable avec le schéma approprié (les types de colonnes de droite et le même ordre de colonne).

  2. Ingérer les données à NewTable partir de OriginalTable, en appliquant les transformations de données requises. Dans l’exemple suivant, Col1 est converti en type de données de chaîne.

    .set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)
    
  3. Utilisez la commande .rename tables pour échanger des noms de tables.

    .rename tables NewTable=OriginalTable, OriginalTable=NewTable
    

    Une fois la commande terminée, les nouvelles données des pipelines d’ingestion existants circulent vers OriginalTable celle-ci correctement typées.

  4. Supprimez la table NewTable.

    NewTable inclut uniquement une copie des données historiques avant la modification du schéma. Elle peut être supprimée en toute sécurité après avoir confirmé que le schéma et les données étaient OriginalTable correctement mis à jour.

    .drop table NewTable
    

Exemple

L’exemple suivant met à jour le schéma de OriginalTable tout en préservant ses données.

Créez la table, OriginalTableavec une colonne « Col1 », de type guid.

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

Ensuite, ingérer des données dans 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

Créez la table, NewTable de type chaîne.

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

Ajoutez des données à partir de OriginalTable et NewTable utilisez la tostring() fonction pour convertir la colonne « Col1 » du guid de type en chaîne de type.

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

Échangez les noms des tables.

.rename tables NewTable = OriginalTable, OriginalTable = NewTable

Supprimez la table, NewTable avec l’ancien schéma et les données.

.drop table NewTable