{DynamoDB}PartiQL: Amazon DynamoDB 用の SQL 互換クエリ言語

前提:aws-cli/2.2.30
aws cli version 1の場合、PartiQLは使用できない


-- 1. aws cli version 2 インストール

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

新しいセッションを開始する
aws --version

-- 2. テストテーブル作成
aws dynamodb create-table \
--table-name tab1 \
--attribute-definitions \
AttributeName=col1,AttributeType=S \
AttributeName=col2,AttributeType=S \
--key-schema \
AttributeName=col1,KeyType=HASH \
AttributeName=col2,KeyType=RANGE \
--billing-mode=PAY_PER_REQUEST \
--stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES

aws dynamodb describe-table --table-name tab1
aws dynamodb list-tables


-- 3. 動作確認

aws dynamodb execute-statement --statement "INSERT INTO tab1 \
VALUE \
{'col1':'val11','col2':'val12'}"

aws dynamodb execute-statement --statement "INSERT INTO tab1 \
VALUE \
{'col1':'val21','col2':'val22'}"

aws dynamodb execute-statement --statement "SELECT * FROM tab1 \
WHERE col1='val11' AND col2='val12'"

aws dynamodb execute-statement --statement "SELECT * FROM tab1"


aws dynamodb execute-statement --statement "UPDATE tab1 \
SET col3=1 \
SET col4={'val14':[100, 200]} \
WHERE col1='val11' AND col2='val12'"

aws dynamodb execute-statement --statement "SELECT * FROM tab1 \
WHERE col1='val11' AND col2='val12'"

aws dynamodb execute-statement --statement "UPDATE tab1 \
SET col4.val14 =list_append(col4.val14,[300]) \
WHERE col1='val11' AND col2='val12'"

aws dynamodb execute-statement --statement "SELECT * FROM tab1 \
WHERE col1='val11' AND col2='val12'"

aws dynamodb execute-statement --statement "UPDATE tab1 \
REMOVE col4.val14[2] \
WHERE col1='val11' AND col2='val12'"

aws dynamodb execute-statement --statement "SELECT * FROM tab1 \
WHERE col1='val11' AND col2='val12'"


aws dynamodb execute-statement --statement "UPDATE tab1 \
SET col5 =<<'member1', 'member2'>> \
WHERE col1='val11' AND col2='val12'"

aws dynamodb execute-statement --statement "SELECT * FROM tab1 \
WHERE col1='val11' AND col2='val12'"

aws dynamodb execute-statement --statement "UPDATE tab1 \
SET col5 =set_add(col5, <<'member3'>>) \
WHERE col1='val11' AND col2='val12'"

aws dynamodb execute-statement --statement "SELECT * FROM tab1 \
WHERE col1='val11' AND col2='val12'"

aws dynamodb execute-statement --statement "SELECT col5 FROM tab1 \
WHERE col1='val11' AND col2='val12'"


aws dynamodb execute-statement --statement "DELETE FROM tab1 \
WHERE col1='val11' AND col2='val12'"

aws dynamodb execute-statement --statement "SELECT * FROM tab1"

-- 4. クリーンアップ

-- テーブル一覧
aws dynamodb list-tables

-- テーブル削除
aws dynamodb delete-table --table-name tab1