變更數據行類型而不遺失數據
適用於: ✅Microsoft網狀架構✅Azure 數據總管
.alter 資料行命令會變更數據行類型,讓原始數據無法復原。 若要在變更數據行類型時保留預先存在的數據,請建立新的適當類型數據表。
針對您想要在 中變更資料行類型的每個資料表 OriginalTable
,執行下列步驟:
使用正確的架構建立數據表
NewTable
(正確的數據行類型和相同的數據行順序)。從
OriginalTable
擷取數據,NewTable
並套用必要的數據轉換。 在下列範例中,Col1 正轉換成字串數據類型。.set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)
使用 .rename tables 命令來交換數據表名稱。
.rename tables NewTable=OriginalTable, OriginalTable=NewTable
當命令完成時,來自現有擷取管線的新數據會流向
OriginalTable
該管線,現在已正確輸入。卸除資料表
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