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"