LoginSignup
8
2

More than 5 years have passed since last update.

GoogleCloudPlatform シェアフル Advent Calendar 2018 13 日目の記事です。

みんな大好きCloudDatastore。もちろん私も大好きなのですが、コマンドラインで操作(データの抽出とか削除とか)が出来ないのが個人的な不満点でした。
そこで、CloudDatastoreをCLIで操作するGo製のツール datastore-tools を作成しました。何番煎じかわからないくらい他にもありそうなツールですが、せっかく作ったし、おまけに年末でもありますからツール供養がてらご紹介させて頂きたいと思います。

何が出来るの?

  • エンティティを出力(Json形式、テーブル形式)
  • エンティティを更新
  • エンティティをtruncate

インストール方法

Goが入っている環境であれば、

$ go get github.com/keitaro1020/datastore-tools

でインストール出来ます。また、Windows/Mac/Linuxのバイナリも用意しています。

使い方

事前準備

CloudDatastoreにアクセスするために gcloud auth をするか、datastore.user のロールを持ったサービスアカウントを作成しキーファイルをダウンロードしておく必要があります。

エンティティを出力

datastore-tools select でエンティティを検索し、出力することが出来ます

$ datastore-tools select -p [project-name] -k [kind-name]
[
  {
    "__key__": {
      "Kind": "Fruits",
      "ID": 5634612826996736,
      "Name": "",
      "Namespace": ""
    },
    "description": "オレンジ",
    "name": "orange"
  },
  {
    "__key__": {
      "Kind": "Fruits",
      "ID": 5643096528257024,
      "Name": "",
      "Namespace": ""
    },
    "description": "りんご",
    "name": "apple"
  }
]

json形式で出力されるので、jqコマンドと組み合わせれば加工も容易です。
-tオプションをつけると、テーブル形式で出力することも出来ます

~ $ datastore-tools select -p [project-name] -k [kind-name] -t
+------------------+--------+-------------+
|       KEY        |  NAME  | DESCRIPTION |
+------------------+--------+-------------+
| 5634612826996736 | orange | オレンジ    |
+------------------+--------+-------------+
| 5643096528257024 | apple  | りんご      |
+------------------+--------+-------------+

エンティティを更新

datastore-tools update でエンティティを更新することが出来ます。
-sオプションに Property=value の形式で値を指定します。
-wオプションで条件を指定し、指定した条件の値のみを変更することも出来ます。

~ $ datastore-tools update -p [project-name] -k [kind-name] -w name=apple -s description="りんご とても美味しい"
~ $ datastore-tools select -p [project-name] -k [kind-name]
[
  {
    "__key__": {
      "Kind": "Fruits",
      "ID": 5634612826996736,
      "Name": "",
      "Namespace": ""
    },
    "description": "オレンジ",
    "name": "orange"
  },
  {
    "__key__": {
      "Kind": "Fruits",
      "ID": 5643096528257024,
      "Name": "",
      "Namespace": ""
    },
    "description": "りんご とても美味しい",
    "name": "apple"
  }
]

エンティティをtruncate

datastore-tools truncate でエンティティを全件削除することが出来ます。

~ $ datastore-tools truncate -p [project-name] -k [kind-name]
truncate finish, count = 2 
~ $ datastore-tools select -p [project-name] -k [kind-name]
[
]

まとめ

以上が現在の datastore-tools で出来ることになります。まだまだ至らない点もたくさんあるかと思いますが、多くの方に使っていただけたら嬉しいです。
もし不具合や改善提案等ありましたら、Githubのissueとかに書いてもらえれば順次対応していきます。

8
2
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
8
2