Thread: Porting from MySql - meta data issues

Porting from MySql - meta data issues

From
Geoff Caplan
Date:
Hi folks

[Repost of a message that didn't seem to make it onto the list...]

I'm porting quite a big PHP application from MySql and have hit an issue.

I have a number of PHP functions in the app which return meta-info about
the data structure:

list_databases( ) ;
list_tables( $database_name ) ;
list_field_names( $table_name ) ;
is_existing_field( $table_name ) ;

With MySql, this info is readily available using the various SHOW queries,
but I can't figure out how to do this with Postgres.

For databases and tables, the only option I have come up with is to shell
out to psql and use a regex to parse the strings returned. Clearly, this
would be a bit of a hack, and not resource efficient. For field names, I
guess I could do a SELECT, provided there is at least one record, and get
at the field names returned... Again, not very elegant.

Can any kind person suggest a more effective approach? I am brand new to
Postgres, and doing this under considerable time pressure, so apologies if
I am missing anything obvious - I can't find anything in the docs, or in
the articles on porting from MySQL...

Geoff Caplan
Advantae Ltd


Re: Porting from MySql - meta data issues

From
Antti Haapala
Date:
> I have a number of PHP functions in the app which return meta-info about
> the data structure:
>
> list_databases( ) ;
> list_tables( $database_name ) ;
> list_field_names( $table_name ) ;
> is_existing_field( $table_name ) ;
>
> With MySql, this info is readily available using the various SHOW queries,
> but I can't figure out how to do this with Postgres.

Run psql with -E switch and you're able to see internal queries generated
by i.e. \dt and \l commands. Then you can cut'n'paste and modify those
queries to match your requirements.

--
Antti Haapala