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)