bash: Výpis sloupců tabulek s varchar(255)

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;

Komentáře

Oblíbené příspěvky