Search code examples
amazon-web-servicescsvamazon-dynamodbaws-cli

Export a DynamoDB table as CSV through AWS CLI (without using pipeline)


I am new to AWS CLI and I am trying to export my DynamoDB table in CSV format so that I can import it directly into PostgreSQL. Is there a way to do that using AWS CLI?

I came across this command: aws dynamodb scan --table-name <table-name> - but this does not provide an option of a CSV export.

With this command, I can see the output in my terminal but I am not sure how to write it into a file.


Solution

  • If all items have the same attributes, e.g. id and name both of which are strings, then run:

    aws dynamodb scan \
        --table-name mytable \
        --query "Items[*].[id.S,name.S]" \
        --output text
    

    That would give tab-separated output. You can redirect this to file using > output.txt, and you could then easily convert tabs into commas for csv.

    Note that you may need to paginate per the scan documentation:

    If the total number of scanned items exceeds the maximum dataset size limit of 1 MB, the scan stops and results are returned to the user as a LastEvaluatedKey value to continue the scan in a subsequent operation. The results also include the number of items exceeding the limit. A scan can result in no table data meeting the filter criteria.

    Another option is the DynamoDBtoCSV project at github.