Google Cloud CLI를 사용하여 데이터 삽입, 업데이트, 삭제

이 페이지에서는 gcloud 명령줄 도구를 사용하여 데이터를 삽입, 업데이트, 삭제하는 방법을 설명합니다.

DML을 사용하여 데이터 수정

DML(Data Manipulation Language) 문을 실행하려면 gcloud spanner databases execute-sql 명령어를 사용합니다. 다음 예시에서는 Singers 테이블에 새 행을 추가합니다.

gcloud spanner databases execute-sql example-db --instance=test-instance \
    --sql="INSERT Singers (SingerId, FirstName, LastName) VALUES (1, 'Marc', 'Richards')"

Partitioned DML 문을 실행하려면 gcloud spanner databases execute-sql 명령어를 --enable-partitioned-dml 옵션과 함께 사용합니다. 다음 예시는 Albums 테이블의 행을 업데이트합니다.

gcloud spanner databases execute-sql example-db \
    --instance=test-instance --enable-partitioned-dml \
    --sql='UPDATE Albums SET MarketingBudget = 0 WHERE MarketingBudget IS NULL'

Spanner DML 참조는 DML 구문을 참조하세요.

rows 명령어 그룹을 사용하여 행 수정

gcloud spanner rows 명령어 그룹을 사용하여 데이터베이스의 데이터를 수정합니다.

  • 테이블에 새 행을 삽입합니다.
  • 테이블 내 기존 행의 열을 업데이트합니다.
  • 테이블에서 행을 삭제합니다.

rows 명령어 그룹은 모든 유효한 열 유형의 리터럴을 인식합니다.

테이블에 행 삽입

테이블에 새 행을 삽입하려면 키 열과 기타 필요한 열의 값을 포함해야 합니다.

gcloud spanner rows insert --instance=INSTANCE_ID --database=DATABASE_ID \
    --table=TABLE_NAME \
    --data=COL_NAME_1=COL_VALUE_1,COL_NAME_2=COL_VALUE_2,COL_NAME_3=COL_VALUE_3,...,COL_NAME_N=COL_VALUE_N

다음 예시에서는 Singers 테이블에 새 행을 삽입합니다.

gcloud spanner rows insert --instance=test-instance --database=example-db \
    --table=Singers \
    --data=SingerId=1,FirstName='Marc',LastName='Richards'

테이블의 행 업데이트

테이블의 행을 업데이트하려면 키 열과 업데이트하려는 열의 값을 포함해야 합니다.

gcloud spanner rows update --instance=INSTANCE_ID --database=DATABASE_ID \
    --table=TABLE_NAME \
    --data=COL_NAME_1=COL_VALUE_1,COL_NAME_2=COL_VALUE_2,COL_NAME_3=COL_VALUE_3,...,COL_NAME_N=COL_VALUE_N

다음 예시에서는 Singers 테이블의 행을 업데이트합니다.

gcloud spanner rows update --instance=test-instance --database=example-db \
    --table=Singers \
    --data=SingerId=1,FirstName='Marc',LastName='Richards'

update 명령어를 사용하여 키 값을 변경할 수 없습니다. 키 값을 업데이트하려면 새 행을 만들고 기존 행을 삭제해야 합니다.

테이블에서 행 삭제

행을 삭제하려면 기본 키 열의 값을 지정해야 합니다.

gcloud spanner rows delete --instance=INSTANCE_ID --database=DATABASE_ID  \
    --table=TABLE_NAME \
    --keys=KEY_VALUE_1,KEY_VALUE_2,KEY_VALUE_3
다음 예시는 'Singers' 테이블에서 행을 삭제합니다.
gcloud spanner rows delete --instance=test-instance --database=example-db \
    --table=Singers \
    --keys=1

ARRAY 값 지정

ARRAY에 값을 삽입하거나 업데이트하려면 데이터를 YAML 파일에 넣고 --flags-file 옵션을 사용합니다.

예를 들어 이 YAML 파일은 Numbers 열의 [1,2,3] 배열을 지정합니다.

# stats.yaml
--data:
    Id: 1
    Locked: True
    Numbers:
        - 1
        - 2
        - 3

YAML 데이터가 있는 행을 삽입하려면 --flags-file 옵션을 사용합니다.

gcloud spanner rows insert --instance=test-instance --database=example-db \
     --table=Stats \
     --flags-file stats.yaml

NULL 배열의 경우 파일에 Numbers 값을 포함하지 마세요.

# stats.yaml
--data:
    Id: 1
    Locked: True

빈 배열의 경우 배열을 []로 정의합니다.

# stats.yaml
--data:
    Id: 1
    Locked: True
    Numbers: []

커밋 타임스탬프 지정

값을 자동으로 커밋 타임스탬프 열에 삽입하거나 업데이트하려면 spanner.commit_timestamp()를 열의 값으로 전달합니다. 다음 예시는 행이 삽입될 때 LastUpdated 열에 커밋 타임스탬프를 기록합니다.

gcloud spanner rows insert --instance=test-instance --database=example-db \
    --table=Singers \
    --data=SingerId=1,LastUpdated='spanner.commit_timestamp()'

다음 예시는 LastUpdated 열에 특정 타임스탬프 값을 씁니다.

gcloud spanner rows update --instance=test-instance --database=example-db \
    --table=Singers \
    --data=SingerId=1,LastUpdated=2017-01-02T12:34:00.45Z