-
-
Save sanderpick/185bc819c6a80b06d1b8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Disclaimer: | |
# We are not actively maintaining this script. We can't assure it will work, but we'll do our best to keep it updated. | |
# Credits: | |
# Original author: https://gist.github.com/lbosque/5876697 | |
# Contributors: | |
# https://gist.github.com/andrewxhill/5884845 Mac-compatible version | |
# https://gist.github.com/kentr / http://maplight.org/ new uuid format bugfix + email notification | |
# https://gist.github.com/sanderpick/185bc819c6a80b06d1b8 allow spaces in filesnames | |
CDB_USER=$1 | |
API_KEY=$2 | |
IMPORT_FILE=$3 | |
NOTIFICATION_EMAIL=$4 | |
PROTOCOL=https | |
DEBUG=true | |
ITEM_ID_REGEX='\"([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\"' | |
if [[ -z $CDB_USER ]] | |
then | |
echo "Missing user" | |
exit 1 | |
fi | |
if [[ -z $API_KEY ]] | |
then | |
echo "Missing api key" | |
exit 1 | |
fi | |
if [[ -z $IMPORT_FILE ]] | |
then | |
echo "Missing file" | |
exit 1 | |
fi | |
function log { | |
if [[ ${DEBUG} == true ]] | |
then | |
echo $1 | |
fi | |
} | |
v1=$(uname) | |
log "Sending file '${IMPORT_FILE}'" | |
if [[ "$v1" = Darwin ]]; | |
then | |
job_id=`curl -s -F file=@"${IMPORT_FILE}" "${PROTOCOL}://${CDB_USER}.cartodb.com/api/v1/imports/?api_key=${API_KEY}" | sed -E "s/\{\"item_queue_id\":${ITEM_ID_REGEX}.*/\1/"` | |
else | |
job_id=`curl -s -F file=@"${IMPORT_FILE}" "${PROTOCOL}://${CDB_USER}.cartodb.com/api/v1/imports/?api_key=${API_KEY}" | sed -r "s/\{\"item_queue_id\":${ITEM_ID_REGEX}.*/\1/"` | |
fi | |
log "Waiting for job '${job_id}' to be completed" | |
while true | |
do | |
if [[ "$v1" = Darwin ]]; | |
then | |
status=`curl -s "${PROTOCOL}://${CDB_USER}.cartodb.com/api/v1/imports/${job_id}?api_key=${API_KEY}" | sed -E 's/(.*)\"state\":\"([a-z]+)\"(.*)/\2/'` | |
else | |
status=`curl -s "${PROTOCOL}://${CDB_USER}.cartodb.com/api/v1/imports/${job_id}?api_key=${API_KEY}" | sed -r 's/(.*)\"state\":\"([a-z]+)\"(.*)/\2/'` | |
fi | |
log "JOB '${job_id}' STATE: ${status}" | |
if [[ -n $NOTIFICATION_EMAIL ]] | |
then | |
log "${PROTOCOL}://${CDB_USER}.cartodb.com" | mail -s "CartoDB import finished: ${IMPORT_FILE}" "${NOTIFICATION_EMAIL}" | |
fi | |
if [[ $status == 'complete' ]] | |
then | |
log "Import successful" | |
exit 0 | |
elif [[ $status == 'failure' ]] | |
then | |
log "Failed import" | |
exit 1 | |
fi | |
sleep 2 | |
done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
./cdb_import.sh <cdb_username> <api_key> <filename> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment