類似ツール
DynamoDBをSQL操作できるツールはddbcliとDQLがあるようだが、今回はddbcliを使ってみた。
https://github.com/winebarrel/ddbcli | https://github.com/stevearc/dql | |
---|---|---|
言語 | Ruby | Python |
Stars | 36 | 81 |
Last commit | 8 months ago | 6 months ago |
Contributors | 3 | 4 |
ddbcliのインストール
公式に書いてある通り
-
gem install ddbcli
する方法 - Releaseから単一ファイルを落としてきてパスの通っているディレクトリに放り込む方法
がある。今回は2の方法をとった。
wget https://github.com/winebarrel/ddbcli/releases/download/v0.6.0/ddbcli-0.6.0.gz
gunzip -c ddbcli-0.6.0.gz > ddbcli
chmod 755 ddbcli
本当に単一のスクリプトファイルになっており、aws-sdkすらrequireしていないので持ち運びに便利そう。
使ってみる
SELECT ALL
を使うとscanになる。SELECT
を使うとqueryになる。
SELECT ALL id, name FROM people;
scanの場合、ORDER BY
は無いのでRubyパイプ機能を使う。
SELECT ALL id, name FROM people | sort_by {|x| x["name"]};
条件をつけてアイテム削除もできる。
DELETE ALL FROM people WHERE id = '1';
取得したアイテムリストをパイプ(|
)でRubyスクリプトに渡せる(すごい!)
ex) SELECT ALL * FROM employees WHERE gender = 'M' | map {|i| Time.parse(i["birth_date"]) };
[
"1957-09-16 00:00:00 +0900",
"1954-12-16 00:00:00 +0900",
"1964-05-23 00:00:00 +0900",
...
取得したアイテムリストを!
でシェルコマンドに渡せる
ex) SELECT ALL * FROM employees LIMIT 10 ! sort;
{"birth_date"=>"1957-09-16", "emp_no"=>452020,...
{"birth_date"=>"1963-07-14", "emp_no"=>16998, ...
{"birth_date"=>"1964-04-30", "emp_no"=>225407,...
...
取得したアイテムリストをファイルに保存する(ファイル名をシングルクォートで囲むことに注意)
Overwrite
SELECT ALL * FROM employees > 'foo.json';
Append
SELECT ALL * FROM employees >> 'foo.json';