On Wednesday 22 March 2006 9:43 pm, Jim Dodgen wrote:
for a query like
select * from a join b on a.x = b.z
anyone know how to get all the column names of the fields that would be
returned from the query?
I am using the DBD::SQLite PERL module
This script shows you how to get the column info.
Scott
use DBI();
use strict;
my $dbname = $ARGV[0] || die usage $0 dbname\n;
my $dbh=DBI-connect(DBI:SQLite2:dbname=$dbname,
,,
{'RaiseError'=1});
my $sqlversion=$DBD::SQLite2::VERSION;
my $dbiversion=$DBI::VERSION;
print Running DBI $dbiversion and DBD::SQLite2 $sqlversion\n;
my @tables = $dbh-tables();
foreach my $table (@tables) {
print \n\n--\nTable --$table
\n--\n;
my $sth2 = $dbh-prepare(select * from $table limit 1) or die
$dbh-errstr;
$sth2-execute;
my $fields = $sth2-{NUM_OF_FIELDS};
print Number of columns = $fields\n;
print Column Name Type Precision Scale Nullable?
\n;
print -- - -
-\n\n;
### Iterate through all the fields and dump the field information
for ( my $i = 0 ; $i $fields ; $i++ ) {
my $name = $sth2-{NAME}-[$i];
### Describe the NULLABLE value
my $nullable = (No, Yes, Unknown)[ $sth2-{NULLABLE}-[$i] ];
### Tidy the other values, which some drivers don't provide
my $scale = $sth2-{SCALE}-[$i];
my $prec = $sth2-{PRECISION}-[$i];
my $type = $sth2-{TYPE}-[$i];
### Display the field information
printf %-30s %5d %4d %4d %s\n,
$name, $type, $prec, $scale, $nullable;
}
}
$dbh-disconnect();
exit(0);
--
Vir prudens non contra ventum mingit
POPFile, the OpenSource EMail Classifier http://popfile.sourceforge.net/
Linux 2.6.11.4-21.11-default x86_64
SuSE Linux 9.3 (x86-64)