https://github.com/winebarrel/ddbcli
※最初に断っておくと、菊水を飲みながらコードを書いていました。今はタカラcanチューハイに移ってます。バグ報告をお待ちしています
※0.4.1をリリースしました
これは何?
Amazon DynamoDBのインタラクティブcliです。要はmysqlコマンドみたいな感じで、インタラクティブ、かつSQLっぽい文法でDynamoDBの参照・更新ができます。
ChangeLog
DynamoDBのアップデートで新しい型(List/Map/Bool/Null)がサポートされたので、それに対応しました。
具体的には以下のような感じで、List/Map/Bool/Nullをセットできます。
INSERT INTO table (id, val1, val2) VALUES (1, {foo: 'FOO', bar: 'BAR'}, null); UPDATE ALL table SET val3 = ['FOO', 'BAR'], val4 = true;
これに伴い、いままでset val = null
で属性を削除をやっていたのを以下のように変更しました。
UPDATE table DEL val WHERE ...
気づいたことなど
Nullの比較
APIリファレンスに書いてあるんですが、検索条件の NULL/NOT_NULL は
Note This operator tests for the nonexistence of an attribute, not its data type. If the data type of attribute "a" is null, and you evaluate it using
とのことで、属性がないことをテストするようです。 NULLかどうかをテストするには
... WHERE any_attr = NULL
で、できました。
また、EQでの比較はMap/Listでもできるようで
... WHERE any_attr = {key1: 'XXX', key2: 'YYY'}
とかも普通にできました。
空List/空Map
許容されているようです。 以下のようなクエリはエラーになりません。
INSERT INTO table (id, val1, val2) VALUES (1, {}, []);
ネストしたList/Map
当たり前かもですが、これも許容されているようです。 以下のようなクエリはエラーになりません。
INSERT INTO table (id, val) VALUES (1, {key1:[1, 2, 3], key2: {k1:["FOO", "BAR"], k2:1000}});