Extracting fieldnames from a TABLE

Hi community,

I would like to retrieve all the fieldnames of a given table. In the
perl module Tie::DBI[1] i found the following fragment:

$dbh->prepare("LISTFIELDS $table");

in the case the DB supports this (Tie::DBI thinks so for Pg) or the
alternative is:

$dbh->prepare("SELECT * FROM $table WHERE 0=1");

The first one doesn't work in my PostgreSQL 7.4.3:

% LISTFIELDS foobar;
ERROR: syntax error at or near "LISTFIELDS" at character 1
%

and the seconds one looks ugly. Is there a solution for the problem?

Greetings

[1]http://search.cpan.org/~lds/Tie-DBI-0.93/lib/Tie/DBI.pm

--
So long... Fuzz

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html
erik.wasser [ Mi, 01 September 2004 17:14 ] [ ID #453490 ]

Re: Extracting fieldnames from a TABLE

One way to do this is to use the column_info database handle method.

Here's a little perl script that accepts a table name as an argument
and returns the column names:

#!/usr/bin/perl

use DBI;
use strict;

my( $database, $table ) = [at] ARGV;
my $dbh = DBI->connect( "dbi:Pg:dbname=$database", 'postgres' );
my $sth = $dbh->column_info( undef, 'public', $table, '%' );
$sth->execute;

while( my [at] row = $sth->fetchrow_array ) {
print join( ' ', $row[ 3 ] ), "\n";
}

$sth->finish;
$dbh->disconnect;


This could be easily modified to stick the contents of $row[ 3 ] into
an array. You'd have to modify the user and schema as appropriate for
your database.

The fourth parameter to column_info is a wildcard so you get everything.

-tfo

On Sep 1, 2004, at 10:14 AM, Erik Wasser wrote:

> Hi community,
>
> I would like to retrieve all the fieldnames of a given table. In the
> perl module Tie::DBI[1] i found the following fragment:
>
> $dbh->prepare("LISTFIELDS $table");
>
> in the case the DB supports this (Tie::DBI thinks so for Pg) or the
> alternative is:
>
> $dbh->prepare("SELECT * FROM $table WHERE 0=1");
>
> The first one doesn't work in my PostgreSQL 7.4.3:
>
> % LISTFIELDS foobar;
> ERROR: syntax error at or near "LISTFIELDS" at character 1
> %
>
> and the seconds one looks ugly. Is there a solution for the problem?
>
> Greetings
>
> [1]http://search.cpan.org/~lds/Tie-DBI-0.93/lib/Tie/DBI.pm
>
> --
> So long... Fuzz


---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings
tfo [ Mi, 01 September 2004 18:28 ] [ ID #453493 ]
Datenbanken » comp.databases.postgresql.sql » Extracting fieldnames from a TABLE

Vorheriges Thema: Defining Field Types with view
Nächstes Thema: colored PL with emacs