dbimon - interactive shell with readline for DBI
SYNOPSIS
`dbimon <dsn> [<user> [<password>]]'
[<options>]
DESCRIPTION
dbimon lets you talk to a running SQL server via the
database independent Perl interface DBI. dbimon was
inspired by Andreas Koenig's pmsql and borrows both design
ideas and code from it. Thus the look and feel is almost
identical to pmsql, in particular the following holds:
· The output is formatted much in the same way as by the
msql or mysql monitor (see below), the msqlexport com
mand and the relshow (mysqlshow) programs, which are
coming with msql or mysql.
· The additional capability is a connection to a read
line interface (if available) and a pipe to your
favorite pager.
· Additionally you may switch between hosts and
databases within one session and you don't have to
type the nasty `\g' or `;' (a trailing `\g', `\q', and
`\p' will be ignored).
If a command starts with one of the following reserved
words, it's treated specially, otherwise it is passed on
verbatim to the DBMS. Output from the daemon is piped to
your pager specified by either the DBIMON_PAGER or the
PAGER environment variable. If both are undefined, the
PATH is searched for either "less" or "more" and the first
program found is taken. If no pager can be determined or
your pager variable is empty or set to `stdout', the pro
gram writes to unfiltered STDOUT.
`?'
print usage summary
`dsn <dsn>'
Connects to the given <dsn>, the old connection is
closed.
`q[uit]'
Leave dbimon.
`re[lshow] [<dsn> [<table>]]'
Without arguments this lists possible data sources by
calling DBI's data_sources method. Data sources are
driver dependent, the driver of the last connection will
be used. Unfortunately DBI offers no possibilities of
specifying a hostname or similar dsn attributes, so you
If a `dsn' is given, dbimon will connect to the given
dsn and list its tables. If both `dsn' and `table' are
present, dbimon will list the tables fields.
The latter possibilities are not supported by the DBI -
these work with private methods. Currently they are
implemented for DBD::mSQL and DBD::mysql.
`se[t] [<var> [<val>]]'
This command displays and modifies dbimon's internal
variables. Without arguments, all variables and their
current settings are listed. With a variable name only
you query the variables value. The two argument form
modifies a variable. Supported variables are:
showMode
This variable controls the output of an SQL result
table. Possible values are `Box', `Export', `List',
`Table' and `HTML'. These correspond to modes of the
Data::ShowTable module with the exception of
`Export': This is handled by dbimon internally, as
Data::ShowTable doesn't offer such a mode. The
`Export' mode is well suited for exporting data to
other database systems. See Data::ShowTable(3).
less
This is the pager variable. You can turn off paging
by setting this to 'stdout'.
listWrapMargin
maxTableWidth
noEscape
These correspond to the variables `$List_Wrap_Mar
gin', `$Max_Table_Width' and `$No_Escape' of the
Data::ShowTable module. See Data::ShowTable(3).
escapeChar
quoteChar
sepChar
For `Export' mode dbimon will use these variables.
Columns are surrounded by the quoteChar, separated
by the sepChar and the escapeChar is used for
inserting these special characters. The defaults
are well suited for Excel (escapeChar = `"',
quoteChar = `"' and sepChar = `;'), thus a row with
the values 1, 'walrus' and 'Nat "King" Cole' will be
displayed as
`! EXPR'
Eval the EXPR in perl
Dumping a database contents
The option --dump forces dump of a databases contents,
much like msqldump or mysqldump do. By default all tables
are dumped, but you can override this with a sequence of
--table $table options.
Dumping means to emit a
CREATE TABLE $table (...)
statement (unless the option --no-dump-structure is
given), followed by a sequence of
INSERT INTO $table (...)
statements, one per row, unless you use the option --no-
dump-data. By default INSERT statements don't include
column names, but the option --dump-names can force that.
Completion
dbimon comes with some basic completion definitions that
are far from being perfect. Completion means, you can use
the TAB character to run some lookup routines on the cur
rent dsn or table and use the results to save a few
keystrokes.
The completion mechanism is very basic, and I'm not
intending to refine it in the near future. Feel free to
implement your own refinements and let me know, if you
have something better than what we have here.
SEE ALSO
You need a readline package installed to get the advantage
of a readline interface. If you don't have it, you won't
be able to use the arrow keys in a meaningful manner.
Term::ReadKey and Term::ReadLine do not come with the perl
distribution but are available from CPAN (see
http://www.perl.com/CPAN).
See the pmsql (1) entry elsewhere in this document, the
DBI (3) entry elsewhere in this document, the Term::Read
Key (3) entry elsewhere in this document, the Term::Read
Line (3) entry elsewhere in this document,
Man(1) output converted with
man2html