LoginSignup
0
0

More than 3 years have passed since last update.

ddbcliを使ってDynamoDBをSQL操作する

Last updated at Posted at 2019-09-04

類似ツール

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のインストール

公式に書いてある通り

  1. gem install ddbcliする方法
  2. 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';

参考

公式のREADME

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0