Um mit den SQL-Befehlen zu experimentieren, ist die interaktive Shell sqlsh.rb im bin/commandline-Ordner der DBI-Distribution sehr zu empfehlen. Sie wird automatisch in /usr/local/bin installiert. Ähnlich dem mysql-Client können Befehle eingegeben und auch nachträglich bearbeitet werden. Zudem wartet die Shell auf einen Tastendruck, wenn das Resultat einer Abfrage mehr Zeilen enthält als auf den Bildschirm passen.
In älteren Versionen war sqlsh.rb im Ordner examples zu finden.
Ab Version 0.0.12 von sqlsh.rb steht die Datei im Verzeichnis bin/commandline
und wird bei der Standardinstallation nach /usr/local/bin kopiert.
Außerdem müssen mehrzeilige Eingaben nicht mehr mit
beendet werden, dafür wird nun jedes SQL-Statement mit einem Semikolon
abgeschlossen.
> ruby sqlsh.rb dbi:Mysql:logs rubychan Rubin CONNECT TO dbi:Mysql:logs USER rubychan PASS Rubin dbi => select count(*) from request +----------+ | count(*) | +----------+ | 5556 | +----------+
dbi => select count(distinct host) from logs +----------------------+ | count(distinct host) | +----------------------+ | 324 | +----------------------+
dbi => select host, count(url) from request\ dbi =| group by host order by 2 desc +-----------------+------------+ | host | count(url) | +-----------------+------------+ | 192.168.1.1 | 521 | | 217.84.24.247 | 364 | | 217.84.20.73 | 256 | | 127.0.0.1 | 248 | | 217.229.172.226 | 208 | ....
Hier haben wir einen Zeilenwechsel eingefügt, indem wir das Return mit einem
\ maskiert haben. Mit group by host werden Einträge mit gleicher
IP-Adresse zusammengefasst und das abschließende order by 2 desc gibt
an, dass die Resultate nach der zweiten Spalte sortiert werden sollen, und zwar
absteigend (descending).