Simple formatted output of sql describe(describe tables) for all tables in a db.
Question from this little exercise: Anyway to "pass" formats? Are they like filehandle refs?
#!/usr/local/bin/perl
use Date::Manip;
use DBI;
main();
sub main
{
my ($table,$field,$type,$n,$key,$def,$ex) = @$row;
my $dbase="dbName";
my $user="userName";
my $pass="passWord";
my $db = DBI->connect ("dbi:mysql:$dbase",
"$user","$pass");
my $firstLine="header - 1st line";
my $secondLine="header - 2nd line";
my $date = UnixDate("today","%B %e, %Y");
#############<FORMAT DEFS>
format STDOUT_TOP =
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$firstLine
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$secondLine
Last Modified: @<<<<<<<<<<<<<<<<<<<<<<<
$date
PAGE: @<<<<<<
$%
.
format TABLEHEADER =
----------------------------------------------------------------------
+---------
Field Type Null Key Default Ex
+tra
----------------------------------------------------------------------
+---------
.
format STDOUT =
@<<<<<<<<<<< @<<<<<<<<<<<<< @<<<<<<< @<<<<<<<< @>>>>>> @||||||
+||||||||
$field, $type $n $key $def $ex
----------------------------------------------------------------------
+---------
.
format TABLE =
@|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+||||||||||
$table
.
format NEWLINE =
.
format ENDTABLE =
----------------------------------------------------------------------
+---------
.
#####################</FORMAT DEFS>
my $std = select (STDOUT);
my $tableRefs = getData ($db, "show tables");
foreach my $tab (@$tableRefs)
{
$~=TABLE;
$table = "TABLE: $$tab[0]";
write TABLE;
$~=NEWLINE;
write NEWLINE;
$~=TABLEHEADER;
write TABLEHEADER;
$~=STDOUT;
my $rowRefs = getData ($db, "describe $$tab[0]");
foreach my $row (@$rowRefs)
{
($field,$type,$n,$key,$def,$ex) = @$row;
write STDOUT;
}
$~=ENDTABLE;
write ENDTABLE;
$~=NEWLINE;
write NEWLINE;
}
$db->disconnect();
}
sub getData
{
my ($db,$sql)=@_;
my $query=$db->prepare("$sql");
$query->execute();
my $rows = $query->fetchall_arrayref();
$rows;
}
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.