Open1
DynamoDB
既存テーブルに複数データを登録する
(1) コンソールからPartiQL
実行クエリ
INSERT INTO "orders" value {'userId' : '00030','orderdate' : '2023/10/28'}
INSERT INTO "orders" value {'userId' : '00031','orderdate' : '2023/10/28'}
複数insertはできない

1クエリずつならいける

実行したいクエリを選択して「実行」でもOK

※公式にもそう書いてある
一度に挿入できる項目は 1 つだけです。1 つの DynamoDB PartiQL ステートメントを発行して、複数の項目を挿入することはできません。
所感
- いちいちコピペ or 対象insert文を選択して実行するのはわりと不便。。
(2) dyneinを使う
[参考]
公式
Zenn dyneinについて書かれた記事
csv取り込みもできて便利だが、少なくとも文字列取り込みでは
- ヘッダが必要で、囲み文字をつけてはいけない
- ボディはダブルクォーテーション必要
ことがわかった
実行コマンド
dy import --table orders --format csv --input-file hoge.csv
OKなパターン
ok.csv
userId,orderdate
"181","2023/10/2"
"191","2023/10/28"
"201","2023/10/28"
ボディーにダブルクォーテーションなしはダメ
ng1.csv
userId,orderdate
181,2023/10/2
191,2023/10/28
201,2023/10/28
ヘッダにダブルクォーテーション付きもダメ
ng2.csv
"userId","orderdate"
"181","2023/10/2"
"191","2023/10/28"
"201","2023/10/28"
※そもそもDynamo DBへのCSVからのデフォルトのインポート方式がそうなってるらしい(なんでや
所感
- PartiQLより幾分楽だが、何かのタイミングでミスしそう。。
(まぁエラーが出たら整形してやり直せばいいだけですが)
これもちょっと不便、、
(3) JSON化して、aws cliで取り込む
実行コマンド
aws dynamodb batch-write-item --request-items file://hoge.json
ok.json
{
"orders": [
{
"PutRequest": {
"Item": {
"userId": {
"S" : "aab"
},
"orderdate": {
"S" : "29"
}
}
}
},
{
"PutRequest": {
"Item": {
"userId": {
"S" : "bbc"
},
"orderdate": {
"S" : "30"
}
}
}
}
]
}
※参考※
所感
- JSON整形のコストはかかるが、一度ツールを作ってしまえば使いまわしがきくので現実的かも。
(4) AWSコンソールの「」よりインポート
そもそも新規テーブル用なので、既存テーブルにはインポートできない。。

※参考※
Amazon S3 のインポートプロセス中に、DynamoDB はインポートされる新しいターゲットテーブルを作成します。既存のテーブルへのインポートは、現在この機能ではサポートされていません。
所感
これができれば一番ラクなのですが、、
できるようになってほしい。。
結論
現時点では、
(2) dyneinを使う
もしくは
(3) JSON化して、aws cliで取り込む(ツールを作る)
がいいかな。。