Portál AbcLinuxu, 16. července 2025 12:12


Dotaz: bash + mysql + read

25.7.2005 17:42 jura
bash + mysql + read
Přečteno: 2628×
Odpovědět | Admin
Dobry den Resim problem cteni dat z db mysql a jejich nasledne zpracovani v BASH. Pouzivam nize uvedenou konstrukci /je funkcni/ ale nelibi se mi cteni pres deskriptor souboru /pri hodne dotazech hodne souboru/. Nalezne nekdo elegantnejsi reseni ?
p.s. rady typu pis to v perlu, pythonu, php .. atd nejsou reseni, jde o BASH

mysql -N -u uzivatel --password=heslo db1 < select.sql > vysledek1.txt
read VSECHNY < vysledek1.txt
echo ${VSECHNY} Diky za rady Jura
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.7.2005 17:57 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: bash + mysql + read
Odpovědět | | Sbalit | Link | Blokovat | Admin
[root@zero ~]# X=$(echo 'select * from user' |mysql -N -D mysql -u root|head -n 1)
[root@zero ~]# echo $X       
localhost root Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y 0 0 0
26.7.2005 08:54 jura
Rozbalit Rozbalit vše Re: bash + mysql + read
Jo to funguje parada. Nebyl by tam jeste typ na nacitani vice radku do pole bez opakovaneho volani mysql ?
26.7.2005 09:31 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: bash + mysql + read
IFS=$'\n' X=($(mysql -N -D mysql -u root <<<<'select * from user'))
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
26.7.2005 09:32 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: bash + mysql + read
sorry jedno < je tam navic
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
26.7.2005 09:57 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: bash + mysql + read
Tady bych měl otázku na Yetiho. Mám pocit, že ${#X} vrací hodnotu špatně a bez ohledu na nastavené IFS. Jsem blbej já, nebo bash?
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
29.7.2005 12:39 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: bash + mysql + read
Tak si odpovím sám. Blbě jsem si přečetl manuál. Odpověď zní 42, eh co to kecám. to je odpověď na jinou otázku. Odpověď zní ${#X[*]}.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
29.7.2005 12:41 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: bash + mysql + read
${#x} pro skalár dává délku řetězce

${#x} pro pole dává délku prvního prvku (stejně jako $x první prvek)

${#x[*]} pro pole dává počet prvků pole

Toto vše mi funguje. Můžeš uvést nějaký příklad, kvůli kterému nebudu muset přidávat do mysql tabulky?
29.7.2005 12:55 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: bash + mysql + read
Jojo, už jsem si RTFM :-)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
29.7.2005 03:20 jano
Rozbalit Rozbalit vše Re: bash + mysql + read
Odpovědět | | Sbalit | Link | Blokovat | Admin
urcite to nie idealne riesenie ale fici tak ako potrebujem a mozno pomoze aj tebe
#!/bin/bash

USER="root"
#PASS="-pHESLOjeHESLO"

#note: from DATABASE_NAME.TABLE_NAME
SQL_QUERY="
    select *
    from
        mysql.user
    "

mysql -N -u $USER $PASS  <<<$SQL_QUERY | \
gawk -F'\t' '{print $1,$2}' |  #print 3,4...x kolko je treba :)
while read COL1 COL2 #COL3 ... COLx kolko je treba :)
do
    #napr.
    echo "COL1: $COL1 | COL2: $COL2"
done

29.7.2005 12:29 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: bash + mysql + read
Huh, tak tomu říkám maso. Co takhle trochu elegance.
IFS=$'\n'
for row in $(mysql -N -D mysql -u root -e 'select * from user')
do (
  IFS=$'\t'
  i=1
  for col in $row
  do
    echo -n "| COL$i: $col "
    let i++
  done;
  echo "|"
)
done
nebo
IFS=$'\n'
for row in $(mysql -N -D mysql -u root -e 'select * from user')
do (
  IFS=$'\t'
  cols=($row)
  echo -e "host: ${cols[0]}\tname: ${cols[1]}"
)
done
nebo
data="$(mysql -N -D mysql -u root -e 'select * from user')"
data="${data//$'\n'/|}"
IFS='|'
for row in $data
do
  cols=(${row//$'\t'/|})
  echo "host: ${cols[0]} | name: ${cols[1]}"
done
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
29.7.2005 12:53 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: bash + mysql + read
A nebo paměťově méně náročné a nechá IFS vně napokoji, protože while read proběhne jako subproces
mysql -N -D mysql -u root -e 'select * from user' |
while read row
do
  IFS='|'
  cols=(${row//$'\t'/|})
  echo "host: ${cols[0]} | name: ${cols[1]}"
done
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
26.12.2006 19:56 Evka | skóre: 13 | Ostrava
Rozbalit Rozbalit vše Re: bash + mysql + read
Jak to udelat at se to nepta na heslo a vezme si jej primo z scriptu?
Use windowsXP or better!! I use Kubuntu.
26.12.2006 19:57 Evka | skóre: 13 | Ostrava
Rozbalit Rozbalit vše Re: bash + mysql + read
odpovim si sam --password=XXXX
Use windowsXP or better!! I use Kubuntu.
29.7.2005 12:46 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: bash + mysql + read
Jen taková drobná otázečka. Jak se to vypořádá s prázdným sloupcem? :-)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.