From cbee214a6bb34344d864dd28420fa849c14f5fe7 Mon Sep 17 00:00:00 2001 From: "D. Rimron-Soutter" Date: Tue, 17 Feb 2026 12:19:14 +0000 Subject: [PATCH] This actually runs now :-o --- bin/import_mysql.sh | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/bin/import_mysql.sh b/bin/import_mysql.sh index 351df40..41335aa 100644 --- a/bin/import_mysql.sh +++ b/bin/import_mysql.sh @@ -1,12 +1,40 @@ #!/bin/bash -mysql -uroot -p -hquinn < ZXDB/ZXDB_mysql.sql -{ 1 ↵ git:‹feat/zxdb ✗› v22.21.1 +# Parse connection details from ZXDB_URL in .env +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +ENV_FILE="$SCRIPT_DIR/../.env" + +if [ ! -f "$ENV_FILE" ]; then + echo "Error: .env file not found at $ENV_FILE" >&2 + exit 1 +fi + +ZXDB_URL=$(grep '^ZXDB_URL=' "$ENV_FILE" | cut -d= -f2-) +if [ -z "$ZXDB_URL" ]; then + echo "Error: ZXDB_URL not set in .env" >&2 + exit 1 +fi + +# Unescape backslash-escaped characters (e.g. \$ -> $) +ZXDB_URL=$(echo "$ZXDB_URL" | sed 's/\\\(.\)/\1/g') + +# Extract user, password, host, port, database from mysql://user:pass@host:port/db +DB_USER=$(echo "$ZXDB_URL" | sed -n 's|^mysql://\([^:]*\):.*|\1|p') +DB_PASS=$(echo "$ZXDB_URL" | sed -n 's|^mysql://[^:]*:\([^@]*\)@.*|\1|p') +DB_HOST=$(echo "$ZXDB_URL" | sed -n 's|^mysql://[^@]*@\([^:]*\):.*|\1|p') +DB_PORT=$(echo "$ZXDB_URL" | sed -n 's|^mysql://[^@]*@[^:]*:\([0-9]*\)/.*|\1|p') +DB_NAME=$(echo "$ZXDB_URL" | sed -n 's|^mysql://[^/]*/\(.*\)|\1|p') + +MYSQL_ARGS="-u${DB_USER} -p${DB_PASS} -h${DB_HOST} -P${DB_PORT}" + +echo "DROP DATABASE IF EXISTS \`${DB_NAME}\`; CREATE DATABASE \`${DB_NAME}\`;" | mysql $MYSQL_ARGS +mysql $MYSQL_ARGS < ZXDB/ZXDB_mysql.sql +{ echo "SET @OLD_SQL_MODE := @@SESSION.sql_mode;" echo "SET SESSION sql_mode := REPLACE(@@SESSION.sql_mode, 'ONLY_FULL_GROUP_BY', '');" cat ZXDB/scripts/ZXDB_help_search.sql echo "SET SESSION sql_mode := @OLD_SQL_MODE;" - echo "CREATE ROLE 'zxdb_readonly';" - echo "GRANT SELECT, SHOW VIEW ON `zxdb`.* TO 'zxdb_readonly';" -} | mysql -uroot -p -hquinn zxdb - mysqldump --no-data -hquinn -uroot -p zxdb > ZXDB/ZXDB_mysql_STRUCTURE_ONLY.sql +# echo "CREATE ROLE IF NOT EXISTS 'zxdb_readonly';" +# echo "GRANT SELECT, SHOW VIEW ON \`zxdb\`.* TO 'zxdb_readonly';" +} | mysql --force $MYSQL_ARGS "$DB_NAME" +mysqldump --no-data -uroot -p -h${DB_HOST} -P${DB_PORT} "$DB_NAME" > ZXDB/ZXDB_mysql_STRUCTURE_ONLY.sql