bash: výpis struktury databáze se zaměřením na textového sloupce

vytvoř-strukturu-tabulek-včetně-textových-hodnot.sh


#!/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;"

# Soubor pro uložení výsledku
OUTPUT_FILE="$1_struktura_tabulek_s_textovými_hodnotami.txt"
rm -f "$OUTPUT_FILE"

# Spuštění MySQL dotazu a uložení výsledku do souboru
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;"

# Spuštění MySQL dotazu a zpracování výsledku
mysql -u "$MYSQL_USER" --skip-column-names -e "$QUERY" | while read -r TABLE; do
    echo -e "\n-----------------------------------------\nStruktura tabulky $TABLE:" >> "$OUTPUT_FILE"

    # Získání výstupu z MySQL a uložení do proměnné
    table=$(mysql -u "$MYSQL_USER" "$MYSQL_DATABASE" -B -e "SHOW COLUMNS FROM $TABLE\G")

    # Přidání feedline k proměnné
    table="$table\n"

    # Zpracování proměnné pomocí AWK
    echo -e "$table" | awk '{
        # Pokud je první sloupec "Field:", vytiskneme název sloupce
        if ($1 == "Field:") {
            printf "%s:", $2
        }
        # Pokud je první sloupec "Type:" a obsahuje VARCHAR(...) nebo TEXT, přidáme k němu typ do výstupu
#        else if ($1 == "Type:" && ($2 ~ /VARCHAR\([0-9]+\)/ || $2 == "TEXT")) {
        else if ($1 == "Type:" && ($2 ~ /varchar\([0-9]+\)/ || $2 == "text" || $2 == "tinytext" || $2 == "mediumtext" || $2 == "longtext")) {
            printf "%s; ", $2
        }
    } END {
        printf "\n" >> "'"$OUTPUT_FILE"'"  # Vynechání prázdného řádku na konci
    }' >> "$OUTPUT_FILE"

done

echo "Struktura tabulek uložena do $OUTPUT_FILE"

Výsledný soubor (zkráceno)

forum_struktura_tabulek_s_textovými_hodnotami.txt

-----------------------------------------
Struktura tabulky a_acl_groups:

group_id:forum_id:auth_option_id:auth_role_id:auth_setting:
-----------------------------------------
Struktura tabulky a_acl_options:

auth_option_id:auth_option:varchar(50); is_global:is_local:founder_only:
-----------------------------------------
Struktura tabulky a_acl_roles:

role_id:role_name:varchar(255); role_description:text; role_type:varchar(10); role_order:


Komentáře

Oblíbené příspěvky