get_výpis_tabulek_s_dlouhým_textem.sh
#!/bin/bash
# TENTO SKRIPT VYCHÁZÍ ZE SOUBORU VYGENEROVANÉHO POMOCÍ SKRIPTU
# sudo vytvoř-strukturu-tabulek-včetně-textových-hodnot.sh forum
# kde forum je název mysql tabulky ze které se extrahují informace
# Tento skript jen zredukuje informace ze získaného souboru na minimum
# tj. HLEDÁ SLOUPCE S TYPEM varchar(255), které jsou zapsány jako
# nazev_sloupce:typ; ... ale jen ty s tím textovým formátem, který hledal
# předchozí skript
# UŽITEK:
# 1) čtení po řádcích v cyklu while
# 2) hledání řetězce hlavičky pomocí if
# 3) vyextrahování názvu tabulky z hlavičky pomocí cut a sed
# 4) možnost hledání pomocí if nebo grep se vstupem <<< z line
# 5) rozparsování řádku do pole sloupců pomocí read -r -a
# 6) využití cyklu for ke zpracování pole
# 7) přístup k prvku pole
# 8) porovnání, hledání v prvku pole pomocí if
# 9) hledání a záměna pomocí sed: získání jednoho slova mezi slovy.
ofile="dlouhé_textové_sloupce.txt"
rm -f "$ofile"
while IFS= read -r line; do
if [[ "$line" == *"Struktura tabulky"* ]]; then
table_name=$(echo "$line" | cut -d' ' -f3 | sed 's/:$//' )
output_text="Tabulka: $table_name -> "
echo "$output_text" >> "$ofile"
read # Přeskočíme oddělovací řádek
# echo $table_name
read -r line
IFS=';' read -ra columns <<< "$line"
for column in "${columns[@]}"; do
# echo "column: $column"
IFS=':' read -ra colNames <<< "$column"
nameIndex=$((${#colNames[@]} - 2))
valueIndex=$((${#colNames[@]} - 1))
prelast_colName="${colNames[$nameIndex]}"
prelast_colValue="${colNames[$valueIndex]}"
if [[ "$prelast_colValue" =~ "varchar(" ]]; then
output_text="$prelast_colName $prelast_colValue;"
echo "$output_text" >> "$ofile"
fi
done
fi
done < forum_struktura_tabulek_s_textovými_hodnotami.txt
echo "$ofile uložen"
Generuje výsledek (zkrácený výpis):
Tabulka: a_acl_groups ->
Tabulka: a_acl_options ->
auth_option varchar(50);
Tabulka: a_acl_roles ->
role_name varchar(255);
role_type varchar(10);
Tabulka: a_acl_roles_data ->
Tabulka: a_acl_users ->
Tabulka: a_attachments ->
physical_filename varchar(255);
real_filename varchar(255);
extension varchar(100);
mimetype varchar(100);
Tabulka: a_banlist ->
ban_ip varchar(40);
ban_email varchar(100);
ban_reason varchar(255);
ban_give_reason varchar(255);
Tabulka: a_bbcodes ->
bbcode_tag varchar(16);
Původní soubor (zkráceno):
Ze souboru
~/Projekty_www/phpBB3-docs$ head -n 200 forum_struktura_tabulek_s_textovými_hodnotami.txt
který byl vytvořen tímto skriptem (jeden z nich):
vytvoř-strukturu-tabulek-včetně-textových-hodnot.sh
vytvoř-strukturu-tabulek.sh
extrahuj_konstanty_tabulek.sh (skript pro získání názvů konstant se jmény tabulek)
get-seznam-dotazu.sh (tento skript hledá blok textu se slovem SQL dotazu)
-----------------------------------------
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:
-----------------------------------------
Struktura tabulky a_acl_roles_data:
role_id:auth_option_id:auth_setting:
-----------------------------------------
Struktura tabulky a_acl_users:
user_id:forum_id:auth_option_id:auth_role_id:auth_setting:
-----------------------------------------
Struktura tabulky a_attachments:
attach_id:post_msg_id:topic_id:in_message:poster_id:is_orphan:physical_filename:varchar(255); real_filename:varchar(255); download_count:attach_comment:text; extension:varchar(100); mimetype:varchar(100); filesize:filetime:thumbnail:
-----------------------------------------
Struktura tabulky a_banlist:
ban_id:ban_userid:ban_ip:varchar(40); ban_email:varchar(100); ban_start:ban_end:ban_exclude:ban_reason:varchar(255); ban_give_reason:varchar(255);
-----------------------------------------
Struktura tabulky a_bbcodes:
bbcode_id:bbcode_tag:varchar(16); bbcode_helpline:text; display_on_posting:bbcode_match:text; bbcode_tpl:mediumtext; first_pass_match:mediumtext; first_pass_replace:mediumtext; second_pass_match:mediumtext; second_pass_replace:mediumtext;
Žádné komentáře:
Okomentovat