SEMESTRALKA Z DBS

Written in

by

Omlouvam se ze tenhle blog par tydnu zanedbavam, ale s tim jak se blizi zkouskou tak je casu cim dal min. Tenhle vikend jsem napriklad stravil vymislenim rafinovanych zpusobu jak do svoji semestralky z databazovych systemu dostat nejak smysluplna data. Tak treba asi 200 ulic i s realnymi cily popisnymi a orientacnimi jsem vytahl z telekomackeho telefonniho seznamu. Nicmene stejne vic jak pulka tabulek zustava prazdna a to hlavne proto, ze ty plnici dotazy nemuzu ladit, protoze ve skole zase nejede aplikacni server. Ach jo. Asi nebudu moct jit v utery na prednasku z TI a o to dyl si zitra protahnu den a budu tam ty data cpat pod parou. Snad to zitra zase nahodi. Blby je ze zitra prednaska z DBS vyjimecne zacina uz v 7:30 takze sem zvedavej jak zitra vstanu :((

Jinak jsem dnes docela dost laboroval s regularnimi vyrazy. Tim jsem prisel na ruzne odlisnosti mezi regexp v grepu, perlu a ve vimku. Par prikladu za vsechny:

Skriptik ktery do jinak uz hotoveho seznamu vkladacich dotazu na misto „i“ vlozi unikatni id:

$ cat id.pl
#!/usr/bin/perl -w

$i=14;
# nacita ze stdin nebo soubor z parametru
while ( $radek=<> ) {
# samotny regularni vyraz nahrady
$radek=~ s/VALUES \(i,/VALUES ($i,/;
$i++;
print $radek;
}

Ta inicializace na 14 je tam proto, ze jsem uz mel ve svem souboru nejake data ocislovane rucne.

Ted neco z grepu. Tak napriklad jsem mel fajl stazeny z czfree.net mapy, kde byli aktivni AP a nody. Nody se odlisovali tak, ze nemeli kanal a essid (pravda nekterym jsem od nich pomoct ;). No tak jsem udelal neco takovyhlejo:

grep „[^0123456789]$“ do10km.txt > klienti.txt

a mel jsem seznam klientu. No a pak jsem si hral s tema textovejma souborama ve vimku abych z nich dostal prebytecny znaky a dostal do nich ty sql dotazy. Jeden z jednodussich za vsechny:

:%s/\([^ ]*\)\s.*[0-9]°\s\(.*\)$/INSERT INTO INTERFACE (ifID,mac,dev) VALUES ((SELECT nodID FROM NOD WHERE nazev=’\2′)),’\1′,’wlan0′);/

Pricemz jsem mel soubor zhruba s nasledujicima radkama:
00:02:2D:42:66:F0 6400m 7° pigeon
00:02:2D:90:28:6E 9211m 322° angada
00:02:2D:90:2E:44 8675m 48° Danny
00:03:2F:10:F1:85 7187m 75° Bandit

a vysledek pak vypadal nasledovne:
INSERT INTO INTERFACE (ifID,mac,dev) VALUES ((SELECT nodID FROM NOD WHERE +nazev=’pigeon‘)),’00:02:2D:42:66:F0′,’wlan0′);
INSERT INTO INTERFACE (ifID,mac,dev) VALUES ((SELECT nodID FROM NOD WHERE +nazev=’angada‘)),’00:02:2D:90:28:6E‘,’wlan0′);
INSERT INTO INTERFACE (ifID,mac,dev) VALUES ((SELECT nodID FROM NOD WHERE +nazev=’Danny‘)),’00:02:2D:90:2E:44′,’wlan0′);
INSERT INTO INTERFACE (ifID,mac,dev) VALUES ((SELECT nodID FROM NOD WHERE +nazev=’Bandit‘)),’00:03:2F:10:F1:85′,’wlan0′);
INSERT INTO INTERFACE (ifID,mac,dev) VALUES ((SELECT nodID FROM NOD WHERE +nazev=’Wood‘)),’00:04:E2:7D:31:A0′,’wlan0′);

Tags

Napsat komentář