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:
Žádné komentáře:
Okomentovat