Skip to content

Instantly share code, notes, and snippets.

@CallumJHays
Last active May 14, 2025 02:56
Show Gist options
  • Select an option

  • Save CallumJHays/33d78fcfac7369a447a3d11c7e34eb26 to your computer and use it in GitHub Desktop.

Select an option

Save CallumJHays/33d78fcfac7369a447a3d11c7e34eb26 to your computer and use it in GitHub Desktop.
AWS CLI Rds-Data Query to CSV using jq

AWS CLI Rds-Data Query to CSV using jq

Bash script for using awscli rds-data cli for querying RDS db and outputting to CSV with jq

Usage

DB_NAME=my-db \
SQL_FILE=./my-query.sql \
RDS_CLUSTER_ARN=arn:aws:rds:<region>:<account_id>:cluster:<cluster_id> \
DB_CREDENTIALS_SECRET_ARN=arn:aws:secretsmanager:<region>:<account_id>:secret:<cluster_credentials_secret_id> \
  bash execute-rds-sql.sh

# outputs to eg. my-query-2000-01-01-00:00:00.csv

Dependencies

  • awscli
  • jq
#!/usr/bin/env bash
set -e
DB_NAME=${DB_NAME:?}
SQL_FILE=${SQL_FILE:?}
RDS_CLUSTER_ARN=${RDS_CLUSTER_ARN:?}
DB_CREDENTIALS_SECRET_ARN=${DB_CREDENTIALS_SECRET_ARN:?}
if [[ ! -f "$SQL_FILE" ]]; then
echo "Error: SQL_FILE $SQL_FILE does not exist."
exit 1
fi
RESULT_FILE=$(basename "$SQL_FILE" .sql)-$(date +%Y-%m-%d-%H:%M:%S).csv
echo "Executing SQL file: $SQL_FILE"
echo "Result will be saved to: $RESULT_FILE"
aws rds-data execute-statement \
--resource-arn ${RDS_CLUSTER_ARN} \
--secret-arn ${DB_CREDENTIALS_SECRET_ARN} \
--database ${DB_NAME} \
--sql "$(cat $SQL_FILE)" \
--include-result-metadata \
| jq -r '([.columnMetadata[].name] | @csv), (.records[] | map(to_entries[0].value) | @csv)' \
> ${RESULT_FILE}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment