dbimon

Hurricane Electric Internet Services: Accounts starting at $9.95/month
Hurricane Electric Internet Services

NAME

       dbimon - interactive shell with readline for DBI


SYNOPSIS

       dbimon <dsn> [<user> [<password>]]


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:

       o   The output is formatted much in the same way as by the
           msql or mysql monitor (see below), the msqlexport
           command and the relshow (mysqlshow) programs, which
           are coming with msql or mysql.

       o   The additional capability is a connection to a
           readline interface (if available) and a pipe to your
           favorite pager.

       o   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 program
       writes to unfiltered STDOUT.

       ? print usage summary

       C<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
         can hardly list a remote hosts dsns, for example.

         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.

       C<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 the Data::ShowTable(3)
             manpage.

       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_Margin,
             $Max_Table_Width and $No_Escape of the
             Data::ShowTable module. See the Data::ShowTable(3)
             manpage.

       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

               "1";"walrus";"Nat ""King"" Cole"

       ! EXPR
         Eval the EXPR in perl

       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
       current 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.


DRIVER REQUIREMENTS

       This section is mostly for authors of DBI drivers. If you
       are interested in using dbimon only, skip it.

       Dbimon should in theory work with any DBI driver. However,
       DBI is too restricted for really comfortable work. Thus I
       decided to use some very basic possibilities of the
       DBD::mSQL and DBD::mysql drivers. It should be easy to add
       these to any driver and dbimon doesn't depend on them: All
       requests for these variables are braced with eval's so
       that dbimon can either insert defaults or refuse to
       execute the respective commands.

       I'll be happy to drop these additional requirements as
       soon as the DBI gets extended in an appropriate way and
       adopt my sources, but for now, here's what I suggest:

       format_default_size
         A statement handle attribute; reference to an array of
         values, one for each column. The values contain the
         actual maximum size of all values to be distinguished
         from the theroretical maximum. For example, if you have
         a column of type char(64), but the values actually have
         30 characters or less, then the value 30 will be
         supplied by the driver.

         The driver is free, not to implement this attribute or
         to implement it only for certain columns, but he must
         supply undef for other values.

         DBD::mysql implements this by reading the max_length
         attribute of a result. DBD::mSQL does not offer such an
         attribute, but it holds the complete result in memory,
         so I could easily add the attribute by scanning all
         rows. (Perhaps faster than relying on dbimons builtin
         possibility.)

         The array ref is passed to Data::ShowTable::ShowTable as
         the widths attribute.

       format_max_size
         Similar to format_default_size, but this is the
         theoretical maximum size. Again, the driver is free not
         to implement this attribute or implement it for certain
         columns only, but he must supply undef for all other
         columns.

         These values are displayed in the relshow database
         tables command.

       format_type_name
         Reference to an array of type names; for example
         DBD::mSQL will insert the type name int for a column of
         type INT_TYPE. The driver should implement this
         attribute.

         This array is passed to Data::ShowTable::ShowTable as
         the types argument.

       @list = $dbh->func('_ListTables')
         Lists the tables of the dsn corresponding to $dbh.

       $sth = $dbh->func($table, '_ListFields')
         Returns a statement handle describing the fields of a
         table. This could, for example, be implemented by a

           SELECT * FROM table WHERE 0 = 1

         (Of course I can imagine better solutions ... :-)


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 section on pmsql (1), the section on DBI (3), the
       section on Term::ReadKey (3), the section on
       Term::ReadLine (3),
Hurricane Electric Internet Services: Accounts starting at $9.95/month
Hurricane Electric Internet Services
Copyright (C) 1998 Hurricane Electric. All Rights Reserved.