From 662eac8db3b7beb522726c03adfd20bc9b3e8f5b Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 1 Jan 2026 15:47:05 +0100 Subject: [PATCH] erster Test als Script --- scripts/export-databases.sh | 79 +++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100755 scripts/export-databases.sh diff --git a/scripts/export-databases.sh b/scripts/export-databases.sh new file mode 100755 index 0000000..8f0b634 --- /dev/null +++ b/scripts/export-databases.sh @@ -0,0 +1,79 @@ +#!/bin/bash +# Export SQLite and MySQL databases for comparison +# Usage: ./scripts/export-databases.sh + +set -e + +# Load environment variables from docker/.env.dev +if [ -f "./docker/.env.dev" ]; then + export $(grep -v '^#' ./docker/.env.dev | xargs) + echo "Loaded environment variables from ./docker/.env.dev" + echo $MARIADB_USER +fi + +# Configuration +SQLITE_DB="./backend/testdata/prepared_test_data.db" +OUTPUT_DIR="./backend/testdata/exports" +TIMESTAMP="" #"_"$(date +%Y%m%d_%H%M%S) + +# Docker container name +MARIADB_CONTAINER="bamort-mariadb-dev" + +# MySQL credentials (from docker/.env.dev) +#MARIADB_USER="${MARIADB_USER:-bamort}" +#MARIADB_PASSWORD="${MARIADB_PASSWORD:-secure_user_password}" +#MARIADB_DATABASE="${MARIADB_DATABASE:-bamort}" + +# Create output directory +mkdir -p "$OUTPUT_DIR" + +echo "📦 Exporting databases to $OUTPUT_DIR" + +# Export SQLite to SQL dump +if [ -f "$SQLITE_DB" ]; then + echo "📤 Exporting SQLite: $SQLITE_DB" + sqlite3 "$SQLITE_DB" .dump > "$OUTPUT_DIR/sqlite_dump$TIMESTAMP.sql" + + # Export tables as CSV + echo "📊 Exporting SQLite tables to CSV..." + sqlite3 "$SQLITE_DB" "SELECT name FROM sqlite_master WHERE type='table';" | while read table; do + sqlite3 -header -csv "$SQLITE_DB" "SELECT * FROM $table;" > "$OUTPUT_DIR/sqlite_${table}$TIMESTAMP.csv" + done + + echo "✅ SQLite export complete" +else + echo "❌ SQLite database not found: $SQLITE_DB" + exit 1 +fi + +# Export MySQL from Docker container +if docker ps | grep -q "$MARIADB_CONTAINER"; then + echo "📤 Exporting MySQL from container: $MARIADB_CONTAINER" + + # SQL dump + docker exec "$MARIADB_CONTAINER" mariadb-dump -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE" \ + > "$OUTPUT_DIR/mysql_dump$TIMESTAMP.sql" + + # Export tables as CSV + echo "📊 Exporting MySQL tables to CSV..." + docker exec "$MARIADB_CONTAINER" mariadb -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" -D"$MARIADB_DATABASE" \ + -e "SHOW TABLES;" -sN | while read table; do + docker exec "$MARIADB_CONTAINER" mariadb -u"$MARIADB_USER" -p"$MARIADB_PASSWORD" -D"$MARIADB_DATABASE" \ + --batch -e "SELECT * FROM \`$table\`;" | sed 's/\t/,/g' > "$OUTPUT_DIR/mysql_${table}$TIMESTAMP.csv" + done + + echo "✅ MySQL export complete" +else + echo "⚠️ MySQL container not running: $MARIADB_CONTAINER" + echo " Start with: docker-compose -f docker/docker-compose.dev.yml up -d" + exit 1 +fi + +echo "" +echo "✅ Export completed!" +echo "📁 Output directory: $OUTPUT_DIR" +echo "" +echo "Files created:" +ls -lh "$OUTPUT_DIR"/*"$TIMESTAMP"* +echo "" +echo "💡 Compare dumps with: diff $OUTPUT_DIR/sqlite_dump$TIMESTAMP.sql $OUTPUT_DIR/mysql_dump$TIMESTAMP.sql"