Re: To get the column names, data types, and nullables of tables in the schema owned by MASTER_USER

From: Joe Conway <mail(at)joeconway(dot)com>
To: Eugene Yin <eugeneymail(at)ymail(dot)com>, "pgsql-sql(at)postgresql(dot)org" <pgsql-sql(at)postgresql(dot)org>
Subject: Re: To get the column names, data types, and nullables of tables in the schema owned by MASTER_USER
Date: 2016-01-07 20:46:39
Message-ID: 568ECEAF.2030204@joeconway.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On 01/07/2016 12:22 PM, Eugene Yin wrote:
> PostgreSQL ver: 9.4.5 OS: Linux
> GOAL: To get the column names, data types, and nullables of tables in
> the schema owned by MASTER_USER
> In Oracle, I can use the following statement:
>
> |selectt.table_name,t.column_name,t.data_type,t.NULLABLE,(SELECTcol.column_name
> FROMall_constraints cons,all_cons_columns col WHEREcol.table_name
> =t.table_name ANDcons.constraint_type ='P'ANDcons.constraint_name
> =col.constraint_name ANDcons.owner =col.owner andcons.owner
> ='MASTER_USER')Primary_Key_Column|
>
> from user_tab_columns t;
> Now, I am on Postgres (9.4.5). How can I convert the above statement
> into the equivalent SQL on Postgres?

Rather than trying to rewrite that specific query, I'll leave that as an
exercise for you. But to help you get there, start psql with -E option.
Then you will see the queries behind all the meta-commands. E.g. to
describe table tenk1 in database regression:

# psql -E regression
psql (9.5rc1)
Type "help" for help.

regression=# \d tenk1

[...lots of SQL queries for describing the table...]

Table "public.tenk1"
Column | Type | Modifiers
-------------+---------+-----------
unique1 | integer |
unique2 | integer |
two | integer |
four | integer |
ten | integer |
twenty | integer |
hundred | integer |
thousand | integer |
twothousand | integer |
fivethous | integer |
tenthous | integer |
odd | integer |
even | integer |
stringu1 | name |
stringu2 | name |
string4 | name |
Indexes:
"tenk1_hundred" btree (hundred)
"tenk1_thous_tenthous" btree (thousand, tenthous)
"tenk1_unique1" btree (unique1)
"tenk1_unique2" btree (unique2)

HTH,

Joe

--
Crunchy Data - http://crunchydata.com
PostgreSQL Support for Secure Enterprises
Consulting, Training, & Open Source Development

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Adrian Klaver 2016-01-07 22:03:07 Re: public synonym
Previous Message michael@sqlexec.com 2016-01-07 20:27:13 Re: public synonym