共用方式為


變更數據行類型而不遺失數據

適用於: ✅Microsoft網狀架構Azure 數據總管

.alter 資料行命令會變更數據行類型,讓原始數據無法復原。 若要在變更數據行類型時保留預先存在的數據,請建立新的適當類型數據表。

針對您想要在 中變更資料行類型的每個資料表 OriginalTable ,執行下列步驟:

  1. 使用正確的架構建立數據表 NewTable (正確的數據行類型和相同的數據行順序)。

  2. OriginalTable擷取數據,NewTable並套用必要的數據轉換。 在下列範例中,Col1 正轉換成字串數據類型。

    .set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)
    
  3. 使用 .rename tables 命令來交換數據表名稱。

    .rename tables NewTable=OriginalTable, OriginalTable=NewTable
    

    當命令完成時,來自現有擷取管線的新數據會流向 OriginalTable 該管線,現在已正確輸入。

  4. 卸除資料表 NewTable

    NewTable 只包含架構變更前的歷程記錄數據複本。 確認 中的架構和數據 OriginalTable 已正確更新之後,即可安全地卸除。

    .drop table NewTable
    

範例

下列範例會更新的 OriginalTable 架構,同時保留其數據。

使用 guid 類型的數據行 「Col1」 建立資料表 OriginalTable

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

然後將資料內嵌至 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

建立字串類型的數據表 NewTable

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

將資料附加 OriginalTable 至 , NewTable 並使用 函 tostring() 式將 「Col1」 資料行從 guid 類型轉換成類型字串。

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

交換數據表名稱。

.rename tables NewTable = OriginalTable, OriginalTable = NewTable

卸除數據表, NewTable 其中包含舊的架構和數據。

.drop table NewTable