diff --git a/docs/lib/db.md b/docs/lib/db.md index f8d9dfb..96cca34 100644 --- a/docs/lib/db.md +++ b/docs/lib/db.md @@ -137,7 +137,7 @@ PATTERN Pattern to filter tables. ## db-query -Execute single queries on a database. +Execute single queries on a database, or multiple databases if DB name contains SQL style wildcard `%`. **Usage** @@ -145,7 +145,7 @@ Execute single queries on a database. db-query DB QUERY [EXTRA]... Params: -DB Database name +DB Database name or pattern (with % as wildcard - SQL style) QUERY Query to execute EXTRA Optional extra params to 'mysql' ``` diff --git a/lib/db.sh b/lib/db.sh index 399c1bd..94e0d14 100644 --- a/lib/db.sh +++ b/lib/db.sh @@ -105,15 +105,23 @@ db-list-tables() { ## Run single query ## -## @param $1 DB name +## @param $1 DB name or pattern ## @param $2 Query ## @param $* Extra args to mysql #################################### db-query() { - local db="${1:?DB name missing}" + local db="${1:?DB name or pattern missing}" local query="${2:?Query missing}" shift 2 - sudo mysql -D "${db}" -e "${query}" "${@}" + + if [[ "${db}" == *%* ]]; then + while read -r database; do + print-header "DB: ${database}" + db-query "${database}" "${query}" "${@}" + done < <(sudo mysql -Bse "SHOW DATABASES LIKE '${db}'" || true) + else + sudo mysql -D "${db}" -e "${query}" "${@}" + fi } ## Replace string in table