다음을 통해 공유


.alter column 명령

기존 테이블 열의 데이터 형식을 변경합니다.

경고

열의 데이터 형식을 변경할 때 해당 열의 기존 데이터는 이후 쿼리에서 null 값을 반환합니다. 를 사용한 .alter column후에는 다른 명령을 사용하여 열 형식을 이전 값으로 다시 변경하더라도 해당 데이터를 복구할 수 없습니다. 기존 데이터를 보존해야 하는 경우 데이터를 잃지 않고 열 형식을 변경하는 데 권장되는 절차를 참조하세요.

사용 권한

이 명령을 실행하려면 테이블 관리 이상의 권한이 있어야 합니다.

Syntax

.altercolumn [DatabaseName.] Tablename.Columnnametype=ColumnNewType

구문 규칙에 대해 자세히 알아보세요.

매개 변수

이름 형식 필수 Description
DatabaseName string 테이블을 포함하는 데이터베이스의 이름입니다.
TableName string ✔️ 변경할 열이 포함된 테이블의 이름입니다.
ColumnName string ✔️ 변경할 열의 이름입니다.
ColumnNewType string ✔️ 열의 새 데이터 형식 입니다.

예제

.alter column ['Table'].['ColumnX'] type=string

데이터 손실 없이 열 형식 변경

기록 데이터를 유지하면서 열 형식을 변경하려면 올바르게 입력된 새 테이블을 만듭니다.

열 형식을 변경하려는 각 테이블에 T1 대해 다음 단계를 실행합니다.

  1. 올바른 스키마(올바른 열 형식 및 동일한 열 순서)를 사용하여 테이블을 T1_prime 만듭니다.

  2. 에서 T1데이터를 T1_prime 수집하여 필요한 데이터 변환을 적용합니다. 아래 예제에서 Col1은 문자열 데이터 형식으로 변환됩니다.

    .set-or-append T1_prime <| T1 | extend Col1=tostring(Col1)
    
  3. 테이블 이름을 교환할 수 있는 .rename tables 명령을 사용하여 테이블을 교환합니다.

    .rename tables T_prime=T1, T1=T_prime
    

    명령이 완료되면 기존 수집 파이프라인의 새 데이터가 해당 데이터로 T1 흐릅니다.

  4. 테이블 삭제 T1_prime

    T1_prime 는 스키마가 변경되기 전에 기록 데이터의 복사본만 포함하며 의 스키마 및 데이터가 T1 올바르게 업데이트되었는지 확인한 후 안전하게 삭제할 수 있습니다.

    .drop table T1_prime
    

예제:

테이블 T1 의 열 "Col1" 데이터 형식을 guid에서 문자열로 변경합니다.

// Create table T1
.create table T1 (Col1:guid, Id:int)

// Ingest sample data into T1
.ingest inline into table T1 <|
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

// Create table T1_prime with the correct schema and same column order
.create table T1_prime (Col1:string, Id:int)

// Append data to the new table
.set-or-append T1_prime <| T1 | extend Col1=tostring(Col1)

// Rename tables
.rename tables T1_prime = T1, T1 = T1_prime

// Drop table T1_prime, which now has the old schema and data
.drop table T1_prime