Výpis tabulek a sloupců tabulek pomocí bash a awk

Pokud si nainstalujete například forum phpBB3 a chcete získat přehled o tabulkách a jejich sloupcích můžete použít tento skript, který zavoláte včetně celé cesty takto:

sudo ~/Projekty_www/phpBB3-docs/vytvoř-seznam-tabulek.sh forum

:bash


#!/bin/bash

# Kontrola správného použití skriptu
if [ $# -ne 1 ]; then
    echo "Chyba: Musíte zadat název databáze jako argument."
    echo "Použití: $0 <název_databáze>"
    exit 1
fi

# Přihlašovací údaje k MySQL serveru
MYSQL_USER="root"
MYSQL_PASSWORD=""
MYSQL_DATABASE="$1"

# Dotaz pro získání seznamu tabulek
QUERY="SHOW TABLES FROM $MYSQL_DATABASE;"
SELECT_DB="USE $MYSQL_DATABASE;"

# Spuštění MySQL dotazu pro výběr databáze
# mysql -u "$MYSQL_USER" -e "$SELECT_DB"

# Spuštění MySQL dotazu a uložení výsledku do souboru
# mysql -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "$SELECT_DB" -e "$QUERY" > seznam_tabulek.txt
mysql -u "$MYSQL_USER" -e "$QUERY" > "$1_seznam_tabulek.txt"

echo "Seznam tabulek uložen do seznam_tabulek.txt"

# Dotaz pro získání PODROBNÉHO SEZNAMU SE STRUKTUROU
QUERY="USE $MYSQL_DATABASE; SHOW TABLES;"

# Soubor pro uložení výsledku
OUTPUT_FILE="$1_struktura_tabulek.txt"

# Spuštění MySQL dotazu a uložení výsledku do souboru
mysql -u "$MYSQL_USER" --skip-column-names -e "$QUERY" | while read -r TABLE; do
    echo "Struktura tabulky $TABLE:" >> "$OUTPUT_FILE"
    echo "=============================================" >> "$OUTPUT_FILE"
#    mysql -u "$MYSQL_USER" "$MYSQL_DATABASE" -e "SHOW CREATE TABLE $TABLE\G" >> "$OUTPUT_FILE"
# -B jednoduchý výpis sloupců SHOW COLUMNS
#    mysql -u "$MYSQL_USER" "$MYSQL_DATABASE" -B -e "SHOW COLUMNS FROM $TABLE\G"  | awk '{print $1, $2}' >> "$OUTPUT_FILE"
#    mysql -u "$MYSQL_USER" "$MYSQL_DATABASE" -B -e "SHOW COLUMNS FROM $TABLE\G"  | awk 'BEGIN { FS = ": " } $1 == "Field" || $1 == "Type" { printf "%s", $2; if ($1 == "Field") printf ":"; else printf "\n" }' >> "$OUTPUT_FILE"

    # Dotaz pro získání názvů a typů sloupců a jejich zpracování pomocí AWK
    mysql -u "$MYSQL_USER" "$MYSQL_DATABASE" -B -e "SHOW COLUMNS FROM $TABLE\G" | awk '{
        # Pokud je první sloupec "Field", vytiskneme název sloupce
        if ($1 == "Field:") {
            field = $2
        }
        # Pokud je první sloupec "Type", vytiskneme typ sloupce a oddělovač ":"
        else if ($1 == "Type:") {
            printf "%s:%s\n", field, $2 OFS $3
        }
#        else print "A:" "\"" $1 "\"" "B:" "\"" $2 "\"" "C:" "\"" $3 "\""
    }' >> "$OUTPUT_FILE"
    echo "" >> "$OUTPUT_FILE"

done

echo "Struktura tabulek uložena do $OUTPUT_FILE"

 

 

Komentáře

Oblíbené příspěvky