Skip to content
/ lsdy Public
forked from flowerinthenight/lsdy

Tool to query/inspect DynamoDB tables.

License

Notifications You must be signed in to change notification settings

mobingi/lsdy

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CircleCI

Overview

lsdy is a tool for querying DynamoDB tables. It will attempt to display the values in a tabular form using all available attributes (by default, alphabetical order, left to right), unless specified. If --pk is specified, it will query the table with that specific primary key. For tables with sort keys, only string-based sort keys are supported at the moment. When the --sk flag is supplied, it will query all sort keys that begins with the flag value. An empty primary key implies a table scan.

Installation

Using Homebrew (applies to Linux, OSX, and WSL):

$ brew tap flowerinthenight/tap
$ brew install lsdy

If you have a Go environment:

$ go get -u -v github.com/flowerinthenight/lsdy

Usage

# Minimal usage:
$ lsdy TABLE_NAME

# For a more updated help information:
$ lsdy -h

To authenticate to AWS, this tool looks for the following environment variables (can be set by cmdline args as well):

# If --region, --key, --secret, and optionally, --rolearn are not provided, the tool
# will look for these environment variables:
AWS_REGION
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY

# Optional:
ROLE_ARN

# Authenticate using id/secret flags:
$ lsdy --region=xxx --key=xxx --secret=xxx

# Authenticate by assuming a role ARN, in which case, id/secret should have the
# AssumeRole permissions. Using flags:
$ lsdy --region=xxx --key=xxx --secret=xxx --rolearn=xxx

To query a table using a primary key:

# Query table with primary key 'id' value of 'ID0001':
$ lsdy TABLE_NAME --pk "id:ID0001"

To query a table using both a primary key and a sort key:

# Query table with primary key 'id' value of 'ID0001' and sort key 'sortkey' of SK002:
$ lsdy TABLE_NAME --pk "id:ID0001" --sk "sortkey:SK002"

To query a table using multiple primary keys and optional sort key pair(s):

# Multiple primary keys only:
$ lsdy TABLE_NAME --pk "id:ID0001" --pk "id:ID0002" --pk "id:ID9999"

# Multiple primary keys with corresponding sort keys:
$ lsdy TABLE_NAME --pk "id:ID0001,id:ID0002,id:ID9999" --sk "sortkey:AAA,sortkey:BBB,sortkey:CCC"

# Multiple primary keys with only the first pk having a sortkey pair:
$ lsdy TABLE_NAME --pk "id:ID0001,id:ID0002,id:ID9999" --sk "sortkey:AAA"

To scan a table:

# All attributes (columns) will be queried:
$ lsdy TABLE_NAME

# If you want specific attributes (unsorted columns):
$ lsdy TABLE_NAME --attr "col1,col2,col3" --nosort

# or you can write it this way (sorted columns):
$ lsdy TABLE_NAME --attr col1 --attr col2 --attr col3

If you want to describe a table:

# Will output the table details and all its attributes/columns:
$ lsdy TABLE_NAME --describe

Warning! At the moment, --describe will cause a table scan if the --pk flag is not set. For massive tables, it's probably a good idea to supply the --pk flag, in which case, it will only query the attributes from that key.

By default, the maximum length of all cell items in the output table is set by the --maxlen flag.

Need help

PR's are welcome!

  • Handling data tabulation for fullwidth characters (i.e. Japanese, Chinese, etc.) - use tablewriter
  • Filtering/exclusion support - added with the --contains flag
  • Better handling of JSON, map values in cells
  • Better handling of base64-encoded values in cells - added with the --decb64 flag
  • Query secondary indeces
  • Support for other sort key types
  • Config file support
  • Package for Windows - can use WSL for now
  • Output to CSV - added with the --csv flag
  • Add --delete option to delete the queried data
  • Add --limit option in query (Scan and Query)

About

Tool to query/inspect DynamoDB tables.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%