【NoSQL Workbench】DynamoDB Local に CSV インポートする
この記事で、Docker
で DynamoDB
の環境を構築しました。
テストデータを何件か入れようと、Web サービスの方の DynamoDB
からエクスポートした CSV をそのままインポートしたかったのですが、dynamodb-admin
の方では対応していないようです。
なので、今回は NoSQL Workbench
を導入し、Docker
環境の DynamoDB
に CSV をインポートします。
手順
- CSV を用意する
- NoSQL Workbench をインストールする
- local の DynamoDB との接続を設定する
- NoSQL Workbench でデータモデル・テーブルを作成する
- 作成したデータモデル・テーブルに CSV をインポートする
- データモデルを DynamoDB の実テーブルに反映させる
CSV を用意する
適当な CSV を用意してください。
Web サービスの DynamoDB
からエクスポートした CSV でも構いませんし、
お試し目的であれば、PartitionKey
, SortKey
, name
のような感じでも構いません。
ただし、後述するデータモデルの属性名と属性の数、定義順が一致する必要があるので、不要な属性がある場合はここで削除しておいた方がいいでしょう。
今回使用する CSV
こんな感じの CSV を作成しました。
key | type | about |
---|---|---|
pk | String | 都道府県コード, Partition Key |
sk | String | 郵便番号, Sort Key |
name | String | 氏名 |
NoSQL Workbench をインストールする
↓からインストールすることができます。特別なことはありません。
NoSQL Workbench でデータモデル・テーブルを作成する
NoSQL Workbench
を起動して、Amazon DynamoDB
の方の Launch
を押下してください。
左側のナビゲーションペインから Visualizer
を選択します。
Visualizer
画面から Create new data model
を押下してください。
選択画面が表示されるので、Make model from scratch
を選択します。
Name
, Author
, Description
の入力を促されるので、NoSQL Workbench
上での設定になるので、ご自身がわかりやすい名前で入力してください。
左側のナビゲーションペインから Data modeler
を選択し、Data model
から、先ほど作成したモデルを選択し、Create new table
を押下してください。
テーブルを定義する画面が表示されるので、キーや属性の設定を行ってください。テーブル名はなんでも大丈夫です。
ただし、先述したように先ほど作成した CSV の列名、列数、表示順と一致する必要があるので、注意してください。
今回は、テーブル名を area
として、こんな感じに定義します。また GSI などの設定は今回使用しません。
attr | key name | type |
---|---|---|
Partition Key | pk | String |
Sort Key | sk | String |
Other Attr1 | name | String |
作成することができたらこんな感じの画面が表示されます。
作成したデータモデル・テーブルに CSV をインポートする
Visualizer
画面に移動すると、Data model
とテーブルを選択することができるようになっているので、定義したものを選択してください。
以下のような画面が表示されるので、右上の Actions
から Edit data
を選択してください。
テーブルのレコードを設定するような画面に移動します。
右上の Actions
から Import CSV file
を選択してください。
エクスプローラーが開くので、先ほど作成した CSV ファイルを選択して開いてください。
すると、Visualizer
に反映されるので、Save Changes
を押下して変更を保存してください。
local の DynamoDB との接続を設定する
左側のナビゲーションペインから Operation builder
を選択します。
Add Connection
を選択すると、ダイアログが開くので、DynamoDB local
タブを選択し、
接続名(Connection name), ホスト名(Hostname), ポート(Port) をそれぞれ入力します。
今回は以下のように設定しました(この記事 からの続きの場合は同じ設定でいいはずです)。
id | name |
---|---|
Connection name | local-example |
Hostname | localhost |
Port | 8000 |
Connect
を選択すると、新しい接続設定が追加されます。
データモデルをローカルの DynamoDB のテーブルに反映する
先ほどの Visualizer
画面に戻り、希望の Data model
, table
を選択します。
Commit to Amazon DynamoDB
を選択してください。
ダイアログが表示されるので、先ほど設定した接続先を選択し、Commit
を選択します。
成功した場合はその旨を知らせるトーストが表示されるはずです。
dynamodb-admin
や awscli
などを利用している場合はそちらから確認してください。
Overwrite existing tables オプションに関する注意点
Overwrite existing tables
オプションは、既に同名のテーブルが存在する場合に上書きするかどうかを決めるオプションです。
例えば既に空の area
テーブルが存在する場合にこのオプションを外した場合、Commit
は失敗します。レコードの有無は関係ありません。
このような場合は、Overwrite existing tables
オプションにチェックを入れないとデータ追加はできません。
さいごに
今回はローカルで作成した DynamoDB
にテストデータを作成するために、NoSQL Workbench
を導入し CSV インポート作業を行いました。
すでに本番環境で使用しているデータを何件かピックアップしてエクスポートし、CSV で加工してテスト環境に反映させたいときなどは便利に使えそうです。
ただし、本番環境での反映には気を付けたいですね。
以上、ありがとうございました。
参考
NoSQL Workbench
テストデータ生成
Discussion